早在90年代中期,我記得做這樣的事情:Windows 7的批處理文件:如何檢查是否參數已經傳遞到批處理文件
if %1==. dir
基本上,如果你把上面的代碼中dodir.bat
並運行它自己而不傳遞任何參數,它會運行dir命令。但是,如果您將任何參數都作爲參數傳遞,它將不會運行dir命令。
我似乎無法得到這個在我的Windows 7批處理文件中工作。也許我不記得正確的語法。任何助手?
早在90年代中期,我記得做這樣的事情:Windows 7的批處理文件:如何檢查是否參數已經傳遞到批處理文件
if %1==. dir
基本上,如果你把上面的代碼中dodir.bat
並運行它自己而不傳遞任何參數,它會運行dir命令。但是,如果您將任何參數都作爲參數傳遞,它將不會運行dir命令。
我似乎無法得到這個在我的Windows 7批處理文件中工作。也許我不記得正確的語法。任何助手?
其實它是if %1.==. command
(注意在%1
之後的.
)。你現在可以在Windows 7中使用它,它應該可以工作。
實例:
if %1.==. (
echo No parameters have been provided.
) else (
echo Parameters:
echo %*
)
啊..現在我記得了! thx – oscilatingcretin 2011-04-20 21:01:46
嘗試在引號引起:
if "%1"=="" (
echo "nothing was passed"
) else (
echo "a parameter was passed"
dir
)
您可以回聲的出來,我只是把它們放在那裏的教育目的。
if %1.==. dir
將打破如果所述參數包括各種符號等"
,<
等
if "%1"==""
將打破如果所述參數包括報價("
)。
使用if "%~1"==""
代替:
if "%~1"=="" (
echo No parameters have been provided.
) else (
echo Parameters: %*
)
這應該在Windows和DOS的所有版本。
單元測試:
C:\>test
No parameters have been provided.
C:\>test "Lots of symbols [email protected]#$%^&*()_+<>?./`~!, but works"
Parameters: "Lots of symbols [email protected]#$%^&*()_+<>?./`~!, but works"
一個 「一網打盡」 的例子:http://stackoverflow.com/questions/830565/how-do-i-check-that-a-parameter-is-defined-什麼時候打電話批量文件/ 34552964#34552964 – 2016-01-01 01:47:53