我想對批處理文件做簡單的檢查。 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
@rocknow將批處理文件'start.bat'命名爲覆蓋Windows命令解釋器的內置命令__START__是一個非常糟糕的主意。所以強烈建議給該批處理文件一個不同於'start.bat'的名稱。 – Mofi