8
Lệnh cmd.exe giữ cho tôi Cú pháp của lệnh là lỗi không chính xác khi tôi chạy các mã sau đây. Có gì sai với nó?Cú pháp của lệnh không chính xác theo lô?
mã:
@echo off
setlocal enabledelayedexpansion
CALL ant clean build compile
REM loop thru/Run ALL .properties file names from "ExecutionSDKTest_10.2.2" folder
:labelNextTest
FOR %%G in (C:\ExecutionSDKTest_10.2.2\*.properties) DO (
pause
Set fileName=%%~nxG
rem fileName==ENG-822.properties
set testName=!fileName:~0,7!
rem testName==ENG-822
set testNum=!fileName:~4,3!
REM testNum==822
ECHO Please Create: !testName!_Ref.properties.txt in C:\ExecutionSDKTest_10.2.2\Logs
echo Running:!fileName!
java -jar Test.jar !fileName! > Logs\!fileName!.log
set logPath="C:/ExecutionSDKTest_10.2.2/Logs/!fileName!.log"
set refLogPath="C:/ExecutionSDKTest_10.2.2/Logs/!testName!_Ref.properties.txt"
REM if Ref exists check Line by line
if EXIST !refLogPath!(
Call Perl TestProp1RefcheckLines.pl !fileName! !testName!
) else (
rem if ref does NOT exist check one important line
rem returns case number to check for
perl.exe c:\ExecutionSDKTest_10.2.2\TestProp1noRefCases.pl !testNum!
set lineCase=!ERRORLEVEL!
echo linecase is !lineCase!
rem set LineCase to one, two, three or four, depending on case number
FOR /F "tokens=*" %%B in (!logPath!) Do (
set logLine=%%B
rem check line >> : "...job status:..."
if /i "!logLine:~11,33!"=="... STATUS REPORT: ...Job status:"(
if "!lineCase!" =="1"(
if /i "!logline:~32!" == "job status: job finished_error" goto labelPass
)
if "!lineCase!"=="2" (
if /i "!logLine:~32!" == "Job status: job QUEUED" goto labelPass
)
if "!lineCase!"=="4"(
if /i "!logLine:~32!" == "job Execution Finished Successfully" goto labelPass
)
) else (
if /i "!logLine:~11,33!"=="Error initializing the connection" goto labelPass
if /i "!logLine!" == "Exception in thread ""main"" java.lang.IllegalArgumentException: timeout value is negative" goto labelPass
)
)
goto labelFail
)
)
pause
REM Test Passed or Failed
:labelFail
echo !TestName! FAILED due to the above incorrect line
goto labelNextTest
:labelPass
Echo !TestName! PASSED
goto labelNextTest
Vấn đề cơ bản là bạn nên đặt thứ gì đó phức tạp này trong một tập lệnh Perl. Hoặc một kịch bản Powershell, hoặc một VBScript. Hoặc thậm chí là một nhiệm vụ Ant. * Bất cứ điều gì * nhưng một tập tin .bat. IMHO ... PS: Bạn có bất kỳ ý tưởng những gì dòng nó barfing trên? – paulsm4
chào mừng bạn đến với thế giới tuyệt vời của lập trình và gỡ lỗi BAT. Xem câu hỏi SO này http://stackoverflow.com/questions/8987208/how-do-i-make-sense-of-a-batch-file/8987977#8987977 –