PDA

Показать полную графическую версию : работа с 2 текстовыми файлами, именами файлов и всё в цикле


Тишина
11-07-2012, 13:41
И так, у нас есть некоторый текстовый файл-список (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 взять 2ю строку

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

всем заранее спасибо за помощь!

Iska
12-07-2012, 00:21
Например, так:
@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

Тишина
13-07-2012, 15:35
вопрос: цикл работает перебором по переменной i от 1 до "n" или там просто построчно считывается файл list.txt до тех пор пока не кончатся строки?
забыл учесть, что записи в этом файле имя файла n.log подразумевают, что n - это дата(дд,мм,гг) и время(чч,мм,сс,мс)

Iska
13-07-2012, 15:56
«for /f» разбирает файл построчно, пропуская пустые строки.

забыл учесть, что записи в этом файле имя файла n.log подразумевают, что n - это дата(дд,мм,гг) и время(чч,мм,сс,мс) »
Это как-то влияет на результат приведённого пакетного файла, Вы проверяли?

Тишина
15-07-2012, 20:26
В понедельник проверю. По идее не должно влиять!




© OSzone.net 2001-2012