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

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

Ответить
Настройки темы
CMD/BAT - чтение / запись *.txt

Аватара для RUVATA

Старожил


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


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

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


Всем доброго времени суток ...
Продолжаю попытки освоить bat , спасибо всем кто отвечает в моих темах, за терпение к порой банальным проблемам и глупым вопросам.
Вот например еще одна, готов внимать мудрость гуру

Задача - По ходу выполнения батника создать *.txt записать в него значение переменной, открыть/прочитать другой *txt и получить из него новое значение переменной ( соответственно из определенной строки)

Ознакомился http://forum.oszone.net/thread-181512.html этого форума.

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

Код: Выделить весь код
@Echo Off
(For /F %%i In (names.txt) Do (
	Set nm=%%i
	For /F "tokens=*" %%k In (text.txt) Do For /F "tokens=*" %%j In ('Echo %%k') Do Echo %%j
	Echo.
))>out.txt

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


Отправлено: 11:00, 06-08-2010

 

Пользователь


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

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


RUVATA,

хм... комментарии тут излишни, код абсолютно прозрачен, но все же:

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

Для записи и чтения, можно воспользоваться таким приемом (я работаю с одним файлом....):

Код: Выделить весь код
(<nul set /p A="qwer" & Echo.)>>out.txt 

timeout /t 5

For /f %%a in (out.txt) Do Echo %%a

pause
Запись через Set - просто для дополнительной информации, если исключить
Echo. ,то все значения будут записываться в одну строку, если это не нужно, то
достаточно просто Echo "текст". Подробнее расскажет справка...

Отправлено: 11:19, 06-08-2010 | #2



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

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


Аватара для gora

Ушёл из жизни


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

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


Цитата RUVATA:
прошу прокомментировать »
Код: Выделить весь код
@Echo Off
Отключение вывода на экран
Код: Выделить весь код
For /F %%i In (names.txt) Do (
...
)
Построчное чтение (имен) из файла names.txt
Код: Выделить весь код
Set nm=%%i
Присвоение переменной nm прочитанного из файла имени
Код: Выделить весь код
For /F "tokens=*" %%k In (text.txt) Do
Построчное чтение из файла text.txt. Применить в этом цикле простое Echo %%k не получится, т.к., переменная %nm%, содержащаяся в строках файла text.txt, не раскроется в значение этой переменной. Для этого раскрытия применен следующий цикл:
Код: Выделить весь код
For /F "tokens=*" %%j In ('Echo %%k') Do Echo %%j
Здесь уже в переменной %%j значение %nm% будет раскрыто.
Код: Выделить весь код
Echo.
Перевод строки после каждого вывода из text.txt согласно постановке задачи.
Код: Выделить весь код
(...
)>out.txt
Самая первая скобка во второй строке и самая последняя скобка в последней строке - вывод всех операторов Echo в этих кавычках не на экран консоли, а в файл out.txt
Цитата RUVATA:
Задача - По ходу выполнения батника создать *.txt записать в него значение переменной, открыть/прочитать другой *txt и получить из него новое значение переменной ( соответственно из определенной строки) »
Конкретизируйте задачу:
1 Укажите названия обоих файлов (желательно)
2 Приведите содержание второго файла, из которого нужно читать в переменную
3 Укажите номер строки, которую нужно прочитать в переменную

Упс... Опередили.
deepred, тогда Вы продолжайте, а я ушел...
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:35, 06-08-2010 | #3


Аватара для RUVATA

Старожил


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

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


Приведенный в теме код - из примера http://forum.oszone.net/thread-181512.html
это не мой случай... я просто хотел понять как использовать оператор For для чтения то есть с параметром /f
справка - зло я из нее ничего не понял, по крайней мере на лету... думал, что описание примера мне будет доступнее...
видимо ошибался

Цитата:
Разбор файлов состоит в чтении вывода, строки или содержимого файла, разбиении его на отдельные строки текста и разборе каждой строки на ноль или маркеры. Цикл программы for затем называется с переменной итерации, установленной в маркер. По умолчанию /F передает первый отделенный пробелом элемент из каждой строки каждого файла. Пустые строки пропускаются. Используется также другой синтаксис.

for /F ["КлючевыеСловаРазбора"] {%% | %}переменная in (МножествоИменФайлов) do команда [ПараметрыКоманднойСтроки]

for /F ["КлючевыеСловаРазбора"] {%% | %}переменная in ("СимвольнаяСтрока") do команда [ПараметрыКоманднойСтроки]

for /F ["КлючевыеСловаРазбора"] {%% | %}переменная in ('команда') do команда [ПараметрыКоманднойСтроки]
что-то мне ка-то непонятно... как все таки им пользоваться из вышеуказанного...

если можно приведите мне пример кода для вот такой задачи:
Условимся:
файл text.txt имеет следующее содержание
Цитата:
строка1
строка2
строка3
по ходу скрипта объявляются 3 переменные
Цитата:
First = "своя строка"
Second
Mute
Задача
получить в переменную Second значение 2 строки текстового файла text.txt >>
в переменной Mute получить конкатенацию First, "двух символов \\" и Second
создать new.txt
записать в него 1-ой строкой значение Fist
2-ой строкой значение Mute

т.е. содержание new.txt должно получится
Цитата:
своя строка
своя строка\\строка2

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


Последний раз редактировалось RUVATA, 06-08-2010 в 13:37.


Отправлено: 12:34, 06-08-2010 | #4


Аватара для Олег97

Старожил


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

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


RUVATA,
Код: Выделить весь код
@echo off>nul
setlocal enableextensions enabledelayedexpansion
(set first=своя строка
set second=way
set mute=cola
for /f "skip=1 tokens=*" %%i in (text.txt) do set second=%%i & goto :next
)
:next
set mute=%First%\\%Second%
echo %First% > new.txt
echo %mute% >>new.txt

читать дальше »

скрипт пропускает первую строку, передает %%i значение второй строки, передает это же в переменную Second, выходит,
объявляет mute, и записыват в файл

-------
У кого-то глюкогенератор, а у нас bugодельня...

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

Отправлено: 15:04, 06-08-2010 | #5


Аватара для RUVATA

Старожил


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

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


Спасибо... вот именно этого я и хотел...

остались только маленькие нюансы, если не сложно, если не трудно

Цитата Олег97:
:next
set mute=%First%\\%Second%
echo %First% > new.txt
echo %mute% >>new.txt
»
оператор echo производит или > и >> запись? кстати почему так...
сначала > а потом >>

echo - ж вроде отвечает onli за коменты

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


Отправлено: 15:17, 06-08-2010 | #6


Аватара для Олег97

Старожил


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

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


Цитата RUVATA:
кстати почему так...
сначала > а потом >> »
">" создает файл и записывает туда строку
">>" просто дописывает строку в файл
если в обоих случаях указать >, то вторая команда удалит файл new.txt, созданный первой командой, создаст его, и запишет в него %mute%

-------
У кого-то глюкогенератор, а у нас bugодельня...

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

Отправлено: 15:20, 06-08-2010 | #7


Аватара для gora

Ушёл из жизни


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

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


RUVATA, рекомендую прочесть для начала:
Урок bat-аники
Особенности реализации командного процессора cmd.exe операционных систем WinNT, или Урок bat-аники 2-ой

А также можете скачать справку по командам CMD из этого поста и держать ее под рукой.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:28, 06-08-2010 | #8


Аватара для RUVATA

Старожил


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

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


понял... - надо читать "Маркса"
Спасибо, Спасибо, Спасибо....

Ситуация заставляет сталкиваться с администрированием ЛВС... знаний конечно - кот наплакал
Надысь автоматизировать многие процессы... умные люди очень уверенно настаивали на возможностях
BAT... я и слушаюсь... (молодой неопытный). Пишу на VBA, соответственно и Visual Basic (Script, в среде VB-studio) проблемой не будет т.е. решить многие задачи я могу иначе - полноценными приложениями, хотя для большинства задач приложение - лихо! игра не стоит свеч.

Хотелось бы авторитетного мнения... Если есть опыт VB стоит ли заморачиваться с изучением возможностей BAT, или может есть еще варианты?
Может есть интерактивная среда для BAT?

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


Отправлено: 15:43, 06-08-2010 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
.NET - Запись настроек программы в файл txt и чтение этих настроек обратно ProgrammerPC Программирование и базы данных 4 11-12-2009 10:46
[решено] Чтение-запись битого файла vit777 Видео и аудио: обработка и кодирование 3 19-12-2007 09:45
чтение и запись в реестр под администратором ????? paspartu Microsoft Windows 2000/XP 2 08-10-2006 14:17
Чтение и запись CD-R дисков... GulaG Хочу все знать 25 08-06-2004 20:15
Чтение/запись на разделе Spijon Общий по Linux 8 07-10-2003 20:57




 
Переход