2008-10-29 3 views

ответ

3

Если пользователи список слов на одной строке в текстовом файле, разделенных пробелами, например:

one two three four 

Создайте пакетный файл SpaceToComma.bat следующим образом:

@echo off 
setlocal 
for /F "tokens=* delims= " %%a in (%1) do @set data=%%a 
echo %data: =,% 
endlocal 

Затем запустите его, вы получите тыс e слова, разделенные запятыми. Это то, что вы хотите?

C:\>SpaceToComma.bat data.txt 
one,two,three,four 

Если у вас есть файл из нескольких строк, то это будет делать:

data.txt

one two three four 
five six seven 

SpaceToComma.bat

@echo off 
setlocal 
for /F "tokens=* delims= " %%a in (%1) do @call :processaline %%a 
endlocal 
goto :eof 
:processaline 
setlocal 
set data=%* 
echo %data: =,% 
endlocal 
goto:eof 

Выход

C:\>SpaceToComma.bat data.txt 
one,two,three,four 
five,six,seven 

(Возможно, это умный способ сделать это без подпрограммы, используя данные! синтаксис для замедленного расширения переменных, но я не мог заставить его работать с синтаксисом подстановки.)

Если это не то, что вы хотите, пожалуйста, объясните, и я могу попытаться помочь.

(PS: Я радуюсь с помощью пакетных файлов, где люди утверждают, что это не может быть сделано.)

+0

вы имели в виду `spacetocomma.bat` – 2011-07-15 12:28:40

0

Ну, это будет зависеть от того, как вы получаете данные, но вы можете окупить что-то конструкцией For-Do. Сделать полевой разделитель пространством, затем построить строку обратно в do с помощью a, между каждым токеном. Могу ли я предложить более надежный язык сценариев? У вас должен быть VBScript практически на любом относительно современном стекле.

Смежные вопросы