CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
-
akrav
CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
Добрый день!
Есть необходимость построчно проанализировать содержимое текстового файла. Никак не могу определиться с синтаксисом.
@for /f "tokens=*" %%A in (c:\text.txt) do @echo %%A – не работает
Есть необходимость построчно проанализировать содержимое текстового файла. Никак не могу определиться с синтаксисом.
@for /f "tokens=*" %%A in (c:\text.txt) do @echo %%A – не работает
-
akrav
Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
@for /f "delims=" %%A in (c:\text.txt) do @echo %%A
-
akrav
Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
Petya V4sechkin, я так написал точьвточь - ничего не выдаёт.
как быть? мне тоже надо.
как быть? мне тоже надо.
-
akrav
Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
Ingolder, не стесняйтесь подробнее описывать проблему.
-
akrav
Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
Burning Hell,
Вот мой вариант AND для произвольного числа искомых слов в файле
[spoiler]Код: [/spoiler]
где ввызове подпрограммы
Код:
- в первом аргументе - имя файла "%LogFile%",
- в остальных аргументах -искомые слова в кавычках. Здесь пять слов. Уберите лишние.
Процедура возвращает %ErrorLevel%==0 если все слова найдены, иначе %ErrorLevel%==1
Iska, А зачем при поиске нужен конвейер
Код:
Когда можно напрямую сослаться на файл "%full_log_path%" в find.exe и findstr.exe ?
Вот мой вариант AND для произвольного числа искомых слов в файле
[spoiler]Код: [/spoiler]
Код: Выделить всё
@Echo Off
cls
Set /A Iter=0
:Begin
If %Errorlevel%==2 GoTo :Eof
Set /A Iter+=1
Echo +++ Begin %Iter% Iteration
Call :StrDate "DateTime"
Set "LogFile=D:\logs\check_va_lasr_status_%DateTime%.log"
Call "D:\SAS\sas.exe" -sysin "D:\codes\check_va_lasr\check_va_lasr_status.sas" -log "%LogFile%"
Call :get_params_from_main_config "D:\codes\common\init_environment.sas" ""lasr_port" "lasr_host""
Call :IfAND "%LogFile%" "error" "connection" "lasr" "%lasr_port%" "%lasr_host%" && (
Call "D:\SAS\sas.exe" -sysin "D:\codes\check_va_lasr\check_lasr_log_and_run.sas" -nolog
CHOICE /C YN /T 15 /D N /M "Iteration %Iter% finished with Errors. Y - Continue, N - Cancel."
Echo:
GoTo :Begin
) || (
Echo +++ Iteration %Iter% finished successfully
GoTo :Eof
)
GoTo :Eof
:get_params_from_main_config
Set "Key=let"
FOR /F "usebackq tokens=1,2,3 delims==; " %%i IN (`more %1 2^>nul`) DO (
For %%a In (%~2) Do Call :Ident %%a "%%i" "%%j" "%%k"
)
GoTo :Eof
:Ident
If /I %2=="%Key%" If /I %1==%3 Set "%~1=%~4"
GoTo :Eof
:IfAND
>nul 2>&1 findstr.exe /i /l /C:%2 %1 || Exit /B 1
Shift /2
If Not "%2"=="" GoTo :IfAND
Exit /B 0
:StrDate
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET @Tdate=%%d
Set "@Ttime=1%@Tdate:~8,6%"
Set "@Tdate=%@Tdate:~0,4%-%@Tdate:~4,2%-%@Tdate:~6,2%"
If %@Ttime% LSS 1120000 (Set "%~1=%@Tdate%__%@Ttime:~1,2%.%@Ttime:~3,2%.%@Ttime:~1,2% AM" &GoTo :Eof)
Set /A @Ttime=%@Ttime%-120000
Set "%~1=%@Tdate%__%@Ttime:~1,2%.%@Ttime:~3,2%.%@Ttime:~1,2% PM"
GoTo :Eofгде ввызове подпрограммы
Код:
Код: Выделить всё
Call :IfAND "%LogFile%" "error" "connection" "lasr" "%lasr_port%" "%lasr_host%"- в первом аргументе - имя файла "%LogFile%",
- в остальных аргументах -искомые слова в кавычках. Здесь пять слов. Уберите лишние.
Процедура возвращает %ErrorLevel%==0 если все слова найдены, иначе %ErrorLevel%==1
Iska, А зачем при поиске нужен конвейер
Код:
Код: Выделить всё
type "%full_log_path%" | >nul 2>&1 find.exe
type "%full_log_path%" | >nul 2>&1 findstr.exeКогда можно напрямую сослаться на файл "%full_log_path%" в find.exe и findstr.exe ?
-
Petya V4sechkin
Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
@for /f "delims=" %%A in (c:\text.txt) do @echo %%A
-
Ingolder
Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
Цитата deepred:
Это возможно только если файл tex.txt пуст
А также, если файл c:\text.txt отсутствует по указанному пути или он содержит спец. символы, которые батник не может "разобрать". Приведите здесь свой text.txt.
Это возможно только если файл tex.txt пуст
CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
А также, если файл c:\text.txt отсутствует по указанному пути или он содержит спец. символы, которые батник не может "разобрать". Приведите здесь свой text.txt.
-
Petya V4sechkin
Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
Цитата gora:
если файл c:\text.txt отсутствует по указанному пути или он содержит спец. символы, которые батник не может "разобрать"
в данном случае было бы выдано сообщение об ошибке...
Цитата gora:
Приведите здесь свой text.txt
- действительно не помешало бы, а заодно и код пакетника, если таковой имеется...
если файл c:\text.txt отсутствует по указанному пути или он содержит спец. символы, которые батник не может "разобрать"
CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
в данном случае было бы выдано сообщение об ошибке...
Цитата gora:
Приведите здесь свой text.txt
CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
- действительно не помешало бы, а заодно и код пакетника, если таковой имеется...
-
Ingolder
Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
пишу в батнике:
@for /f "tokens=*" %%A in (c:\text.txt) do @echo %%A
не выводит вообще ничего.
куда ж уж подробнее?.
p.s. пишу:
@for /f "delims=" %%A in (c:\text.txt) do @echo %%A
ничего не выводит
@for /f "tokens=*" %%A in (c:\text.txt) do @echo %%A
не выводит вообще ничего.
куда ж уж подробнее?.
p.s. пишу:
@for /f "delims=" %%A in (c:\text.txt) do @echo %%A
ничего не выводит
-
deepred
Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!
Ingolder,
А конкретнее? Что происходит, неужели совсем ничего? Это возможно только если файл tex.txt пуст...Если это единственная строка в *.bat, то добавьте после неё "pause"
А конкретнее? Что происходит, неужели совсем ничего? Это возможно только если файл tex.txt пуст...Если это единственная строка в *.bat, то добавьте после неё "pause"