2011-07-07 9 views

Trả lời

4

Không phải là tôi biết, nhưng bạn có thể dễ dàng viết một tập lệnh theo lô khác.

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

sẽ đặt% errorlevel% thành 0 nếu chuỗi được tìm thấy và không khác nếu chuỗi bị thiếu. Sau đó, bạn có thể kiểm tra điều đó bằng IF ERRORLEVEL 1 goto :fail và thực thi bất kỳ mã nào bạn muốn sau nhãn :fail.

Nếu bạn muốn đánh giá nhỏ gọn một số chuỗi như vậy, bạn có thể sử dụng || Cú pháp:

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 

Hoặc, bạn có thể đi xa hơn nữa và đọc danh sách các chuỗi từ một tập tin

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 
2

tôi đã tạo ra một thư viện cho kiểm tra đơn vị cửa sổ hàng loạt. Nó hiện đang trong giai đoạn trứng nước, nhưng nó hoạt động và tôi sử dụng nó.

Nó được gọi là cmdUnit và nó có thể được tải về từ trang web của dự án trên bitbucket:

https://bitbucket.org/percipio/cmdunit

1

tôi sử dụng sau đây cho filter lệnh loại:

Đối với tập tin thực thi foo.cmd, tạo ra sau tệp:

foo.in.txt:
hello

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 

Sau đó chạy foo.test.cmd