0

バッチ ファイル プログラミングの初心者として、バッチ ファイルを作成しました。以下はコードスニペットです-

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 またはオンライン ユーティリティはありますか?

上記のコードの何が問題になっていますか?

4

1 に答える 1

2

IF コマンドの比較には、文字列または数値の 2 つのタイプがあります。数値比較が必要であることを IF で示すには、数値を追加文字なしで記述する必要があります。したがって、コードは次のように記述する必要があります。

IF %CURRJOBS% LSS %TOTALJOBS% (
    IF %INDEX% GEQ 5 (
        SET /A INDEX=0
    )

変数またはパラメーターが空の値を持つ可能性がある場合、構文エラーを避けるために引用符で囲むのが通例です。次に例を示します。

IF "%POSSIBLEEMPTYVAR%" NEQ "" (

変数に文字列値がある場合、空の値のチェックと比較の両方に同じ形式を使用できます。

IF "%VARIABLE%" equ "THIS VALUE" GOTO OK

ただし、変数が空の可能性があり、それを数値として比較したい場合は、両方のテストを行う必要があります。

于 2012-11-30T16:16:14.157 に答える