2011-07-07 24 views

Odpowiedz

4

Nie, że jestem świadomy, ale łatwo można napisać jeden w innym skrypcie.

call TestBatchScript.cmd > console_output.txt 
findstr /C:"this string" console_output.txt 

ustawi% errorlevel% na zero, jeśli łańcuch zostanie znaleziony, i niezerowe, jeśli ciąg znaków jest nieobecny. Możesz przetestować to za pomocą IF ERRORLEVEL 1 goto :fail i wykonać dowolny kod, który chcesz po etykiecie :fail.

Jeśli chcesz kompaktowy ocenę kilku takich ciągów, można użyć || składnia:

call TestBatchScript.cmd > console_output.txt 
findstr /C:"teststring1" console_output.txt || goto :fail 
findstr /C:"teststring2" console_output.txt || goto :fail 
findstr /C:"teststring3" console_output.txt || goto :fail 
findstr /C:"teststring4" console_output.txt || goto :fail 
goto :eof 

:fail 
echo You Suck! 
goto :eof 

Można też pójść dalej i przeczytać listę ciągów z pliku

call TestBatchScript.cmd > console_output.txt 
set success=1 
for /f "tokens=*" %%a in (teststrings.txt) do findstr /C:"%%a" console_output.txt || call :fail %%a 
if %success% NEQ 1 echo You Suck! 
goto :eof 

:fail 
echo Didn't find string "%*" 
set success=0 
goto :eof 
1

używam następujących do filter poleceń wpisz:

dla pliku wsadowego foo.cmd utwórz następujący pliki:

foo.in.txt:
witam

foo.expected.txt:
hello world

foo.test.cmd:

@echo off 

echo Testing foo.cmd ^< foo.in.txt ^> foo.out.txt 

call foo.cmd <foo.in.txt> foo.out.txt || exit /b 1 

:: fc compares the output and the expected output files: 
call fc foo.out.txt foo.expected.txt || exit /b 1 

exit /b 0 

Następnie uruchom foo.test.cmd

Powiązane problemy