Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Цикл FOR помогите понять синтаксис...

Ответить
Настройки темы
CMD/BAT - Цикл FOR помогите понять синтаксис...

Аватара для RUVATA

Старожил


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


Конфигурация

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


Задача-считывать построчно данные из txt файла (иметь возможность в нем ориентироваться, не только построчно, но и в пределах строки)
сохранять полученные значения в переменных, а так-же собственно запись в текстовый файл (здесь уже проще, но никак не могу врубиться как сделать это в пределах цикла)

справка - темный лес...

как из цикла сохранять полученные значения в переменные, вернее что они сохраняются я понял - где и по какой логике? надо-ли их заранее объявлять? циклический заполняемый динамический массив - это в cmd реально?

%% - что это за переменные, это счетчик, или что это?

Я вот такое наваял - соответственно не работает
пожалуйста поправьте там где в рассуждениях ошибаюсь, или в синтаксисе
Код: Выделить весь код
for /f "tokens=*" %%i in (text.txt) do echo i%% & i%% >> new.txt
Код: Выделить весь код
"tokens=*"
- этот параметр определяет, что с каждой строки захватывается только по одному слову. в тандеме со skip(пропуск) и другими - условия чтения.
Код: Выделить весь код
%%i in (text.txt)
чтение выполнять в из файла (text.txt) в переменную %%i
Код: Выделить весь код
do
- оператор указывающий на циклические инструкции
Код: Выделить весь код
echo i%%
- отобразить значение i% на текущем шаге цикла (кстати - где счетчик, где шаг цикла выставляется?)
Код: Выделить весь код
& i%% >> new.txt
- дописать значение i%% к файлу (new.txt) уже существующему, хотя в идеале, хотелось бы на первом шаге создать, а потом дописывать... но решил пока сюда IF Else не впутывть, и так ничего не понятно.

-------
Одно дело искать сиюминутное решение, другое - искать знания...
вот и думай - что ты ищешь...


Отправлено: 14:39, 09-08-2010

 

Аватара для 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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для RUVATA

Старожил


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

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


Цитата gora:
Почти правильно, только забыли команду Echo и переменная записана неправильно. »
а где необходимо использовать echo?

-------
Одно дело искать сиюминутное решение, другое - искать знания...
вот и думай - что ты ищешь...


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


Аватара для gora

Ушёл из жизни


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

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


Цитата RUVATA:
а где необходимо использовать echo? »
Выделено зеленым
Код: Выделить весь код
for /f "tokens=*" %%i in (text.txt) do echo %%i & echo %%i>> new.txt

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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Цикл FOR помогите понять синтаксис...

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MySQL - Помогите с кодировкой. Не могу понять в чем трабла nicohack Программирование и базы данных 2 12-08-2010 09:17
Вопрос - Помогите понять суть развода gigi1988 Защита компьютерных систем 2 14-07-2010 05:19
CMD/BAT - [решено] Помогите не могу понять ошибся в куске скрипта..... osp2008 Скриптовые языки администрирования Windows 4 01-07-2010 16:35
Монитор - [решено] Помогите понять Kondrat6407 Прочее железо 2 11-10-2008 17:54
Помогите начинающему понять оператор Си++ Guest Программирование и базы данных 4 11-10-2004 18:56




 
Переход