CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!

Аватара пользователя
akrav

CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!

Сообщение akrav »

Добрый день!

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

@for /f "tokens=*" %%A in (c:\text.txt) do @echo %%A – не работает
Аватара пользователя
akrav

Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!

Сообщение akrav »

Petya V4sechkin, я так написал точьвточь - ничего не выдаёт.

как быть? мне тоже надо.
Аватара пользователя
akrav

Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!

Сообщение akrav »

Burning Hell,


Вот мой вариант 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 ?
Аватара пользователя
Ingolder

Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!

Сообщение Ingolder »

Цитата deepred:



Это возможно только если файл tex.txt пуст
CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!




А также, если файл c:\text.txt отсутствует по указанному пути или он содержит спец. символы, которые батник не может "разобрать". Приведите здесь свой text.txt.
Аватара пользователя
Petya V4sechkin

Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!

Сообщение Petya V4sechkin »

Цитата gora:



если файл c:\text.txt отсутствует по указанному пути или он содержит спец. символы, которые батник не может "разобрать"
CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!




в данном случае было бы выдано сообщение об ошибке...


Цитата gora:



Приведите здесь свой text.txt
CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!




- действительно не помешало бы, а заодно и код пакетника, если таковой имеется...
Аватара пользователя
Ingolder

Re: CMD/BAT - [решено] параметры цикла for для построчного анализа текстового файла?!

Сообщение Ingolder »

пишу в батнике:



@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 для построчного анализа текстового файла?!

Сообщение deepred »

Ingolder,



А конкретнее? Что происходит, неужели совсем ничего? Это возможно только если файл tex.txt пуст...Если это единственная строка в *.bat, то добавьте после неё "pause"
Ответить

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