CMD/BAT - работа с 2 текстовыми файлами, именами файлов и всё в цикле

Ответить
Аватара пользователя
Тишина

CMD/BAT - работа с 2 текстовыми файлами, именами файлов и всё в цикле

Сообщение Тишина »

И так, у нас есть некоторый текстовый файл-список (list.txt) вот такого формата:


Цитата:



"имя файла 1.log"



"имя файла 2.log"

....

"имя файла n-1.log"

"имя файла n.log"




* первая и последняя строка файла пустая

** знак ковычек (") - это непосредственно символ в файле, т.е. при обработке его нужно убрать, т.е. взять значение блаблабла из строки "блаблабла"



Этот файл любезно создан командой forfiles которая пометила файлы, старше 3х дней.



в кажом из этих файлов имя файла n.log есть строка, которую нужно выдернуть в переменную.



Алгоритм должен быть такой:

со второй и до предпоследней строки list.txt

1) брать строку из list.txt в переменную FL

2) исключить знаки " из FL (1 и последний символ)

3) из файла с именем из FL взять строку



запутался я что-то с синтаксисом cmd, задача простая на pascal легко программку написать, но не хочется прибегать к нему, а синтаксис cmd для меня дикий... пока что...



всем заранее спасибо за помощь!
Аватара пользователя
Iska

Re: CMD/BAT - работа с 2 текстовыми файлами, именами файлов и всё в цикле

Сообщение Iska »

Например, так:



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
for /f "delims==" %%i in (list.txt) do (
	call :GetSecondLine "%%~i"
	echo %%~i: [!SecondLine!]
)
endlocal
exit /b 0
:GetSecondLine
	setlocal enableextensions enabledelayedexpansion
	set sOutName=%~0
	if exist "%~1" (
		for /f "usebackq skip=1 delims==" %%j in ("%~1") do (
			if not defined sResult set sResult=%%j
		)
	)
	endlocal & set %sOutName:~4%=%sResult%
	exit /b
Аватара пользователя
Тишина

Re: CMD/BAT - работа с 2 текстовыми файлами, именами файлов и всё в цикле

Сообщение Тишина »

вопрос: цикл работает перебором по переменной i от 1 до "n" или там просто построчно считывается файл list.txt до тех пор пока не кончатся строки?

забыл учесть, что записи в этом файле имя файла n.log подразумевают, что n - это дата(дд,мм,гг) и время(чч,мм,сс,мс)
Аватара пользователя
Iska

Re: CMD/BAT - работа с 2 текстовыми файлами, именами файлов и всё в цикле

Сообщение Iska »

«for /f» разбирает файл построчно, пропуская пустые строки.




Цитата Тишина:



забыл учесть, что записи в этом файле имя файла n.log подразумевают, что n - это дата(дд,мм,гг) и время(чч,мм,сс,мс)
CMD/BAT - работа с 2 текстовыми файлами, именами файлов и всё в цикле




Это как-то влияет на результат приведённого пакетного файла, Вы проверяли?
Аватара пользователя
Тишина

Re: CMD/BAT - работа с 2 текстовыми файлами, именами файлов и всё в цикле

Сообщение Тишина »

В понедельник проверю. По идее не должно влиять!
Ответить

Вернуться в «Скриптовые языки администрирования Windows»