作为批处理文件编程的初学者,我创建了一个批处理文件。以下是代码段 -
SET INDEX=1
SET CURRJOBS=10
REM TOTALJOBS and CURRJOBS are dynamic but to keep code here, i have put static values to them
SET TOTALJOBS=1000
IF [%CURRJOBS%] LSS [%TOTALJOBS%] (
IF [%INDEX%] GEQ [5] (
SET /A INDEX=0
)
ECHO Started at %date% %time% with %CURRJOBS% jobs>>%CURRDIR%\JobSubmit.log
REM Here is a call to another bat file with Index.
ECHO Finished at %date% %time% with %CURRJOBS% jobs>>%CURRDIR%\JobSubmit.log
SET /A INDEX+=1
GOTO START
)ELSE (
ECHO Finished at %date% %time% with %CURRJOBS% jobs>>%CURRDIR%\JobSubmit.log
)
现在,这段代码有时可以工作,有时却不行。 但是有一些语法错误可能导致行为异常。是否有任何IDE或在线实用程序来检查批处理文件的语法?
上面的代码有什么问题?
答案 0 :(得分:2)
IF命令中的比较有两种类型:字符串或数字。为了表明我们想要进行数字比较,必须编写没有附加字符的数字。所以,你的代码应该这样写:
IF %CURRJOBS% LSS %TOTALJOBS% (
IF %INDEX% GEQ 5 (
SET /A INDEX=0
)
当变量或参数可能具有空值时,通常将其括在引号之间以避免语法错误,例如:
IF "%POSSIBLEEMPTYVAR%" NEQ "" (
如果变量具有字符串值,则可以使用相同的格式检查空值并进行比较:
IF "%VARIABLE%" equ "THIS VALUE" GOTO OK
但是,如果变量可能为空并且您想将其作为数字进行比较,则必须进行两次测试。