私はバッチファイルを簡単にチェックしようとしています。 argCount
には正しい番号が含まれていますが、変数と番号の比較に問題があります。引数の数が3に等しくない場合にヘルプを表示し、ファイルの最後に移動します。
私が試した:
if not %argCount% == 3
if not %argCount%=='3'
if not '%argCount%'=='3'
if %argCount% NEQ 3
をしかし、予想通り、これらのオプションのどれも働かない...私はいつもしようとしたオプションのほとんどは、私は関係なく、引数の数のメッセージを助ける示し、いくつかのスクリプトに3つの引数を渡すと、最初の3行なしでヘルプメッセージが表示されます(非常に奇妙です)。バッチファイルの引数の数を確認してください
@echo off
set argCount=0
for %%x in (%*) do (
set /A argCount+=1
)
if not %argCount% == 3 (
echo This script requires the next parameters:
echo - absolute path to file
echo - filter (explanation)
echo - true or false (explanation)
echo Examples:
echo start.bat full\path\to\the\file.ext test true
echo start.bat full\path\to\the\file.ext nof false
goto end
)
REM some another code
:end
'のあなたのエコー)は' 'if'ブロックの終わりとして扱われています。すべての ')'をカッコで括弧内のコードブロック内でエスケープします。明示的な理由がない限り、[常に 'setlocal'](https://stackoverflow.com/a/15659309/1683264)を使用してください。 'goto:EOF'や' exit/b'を使うと、スクリプトの最後に ':end'ラベルを取り除くことができます。 – rojo
@roheckバッチファイルに 'start.bat'という名前を付けることは、Windowsのコマンドインタプリタの組み込みコマンド__START__をオーバーライドするので、非常に悪い考えです。そのため、バッチファイルに 'start.bat'とは異なる名前を付けることを強くお勧めします。 – Mofi