Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата RUVATA:
for /f "tokens=*" %%i in (text.txt) do echo i%% & i%% >> new.txt »
Переменные нужно записывать правильно, а не абы как.
Код: Выделить весь код
for /f "tokens=*" %%i in (text.txt) do echo %%i & echo %%i>> new.txt
Цитата RUVATA:
справка - темный лес... »
Да ленитесь Вы читать. ИМХО

Цитаты из справки:
Цитата:
FOR /F ["ключи"] %переменная IN (набор) DO команда [параметры]
...
Набор содержит имена одного или нескольких файлов, которые по очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбивки его на отдельные строки текста и выделения из каждой строки заданного числа подстрок (в том числе нуля). Затем найденная подстрока используется в качестве значения переменной при выполнении основного тела цикла. По умолчанию ключ /F выделяет из каждой строки файла первое слово, очищенное от окружающих его пробелов. Пустые строки в файле пропускаются.
Необязательный параметры "ключи" служит для переопределения заданных по умолчанию правил обработки строк. Ключи представляют собой заключенную в кавычки строку, содержащую указанные параметры. Ключевые слова:

eol=c - определение символа комментариев в конце строки (допускается задание только одного символа).
skip=n - число пропускаемых при обработке строк в начале файла.
delims=xxx - определение набора разделителей для замены заданных по умолчанию пробела и знака табуляции.
tokens=x,y,m-n - определение номеров подстрок, выделяемых из каждой строки файла и передаваемых для выполнения в тело цикла. При использовании этого ключа создаются дополнительные переменные. Формат m-n представляет собой диапазон подстрок с номерами от m по n. Если последний символ в строке tokens= является звездочкой, создается дополнительная переменная, значением которой будет весь оставшийся текст в строке после обработки последней подстроки.
usebackq - применение новой семантики, при которой строки, заключенные в обратные кавычки, выполняются как команды, строки, заключенные в прямые одиночные кавычки, являются строкой литералов команды, а строки, заключенные в двойные кавычки, используются для выделения имен файлов в списках имен файлов.

Поясняющий пример:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

эта команда обрабатывает файл myfile.txt, пропускает все строки, которые начинаются с символа точки с запятой, и передает вторую и третью подстроки из каждой строки в тело цикла, причем подстроки разделяются запятыми и/или пробелами. В теле цикла переменная %i используется для второй подстроки, %j - для третьей, а %k получает все оставшиеся подстроки после третьей.
Цитата RUVATA:
Код:
"tokens=*"- этот параметр определяет, что с каждой строки захватывается только по одному слову. в тандеме со skip(пропуск) и другими - условия чтения. »
Это означает, что в переменную цикла (%%i) будет включена ВСЯ строка целиком.
Цитата RUVATA:
echo i%%- отобразить значение i% на текущем шаге цикла (кстати - где счетчик, где шаг цикла выставляется?) »
Выводит в окно консоли значение переменной (%%i). Счетчика цикла здесь нет (цикл будет повторятся пока не кончится разбор всего файла text.txt), а шаг - одна строка этого файла. Переменная записана неправильно
Цитата RUVATA:
Код:
& i%% >> new.txt- дописать значение i%% к файлу (new.txt) уже существующему »
Почти правильно, только забыли команду Echo и переменная записана неправильно.

Последний раз редактировалось gora, 09-08-2010 в 15:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:12, 09-08-2010 | #2