[英]Windows 7 batch files: How to check if parameter has been passed to batch file
回到90年代中期,我記得做過這樣的事情:
if %1==. dir
基本上,如果你將上面的代碼放在dodir.bat
並自己運行它而不傳遞任何參數,它將運行dir命令。 但是,如果您將任何內容作為參數傳遞給它,它將不會運行dir命令。
我似乎無法在我的Windows 7批處理文件中使用它。 也許我不記得正確的語法。 有幫助嗎?
if %1.==. dir
如果參數包含諸如"
, <
等的各種符號,則if %1.==. dir
將中斷
if "%1"==""
參數包含引號( "
), 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 ~@#$%^&*()_+<>?./`~!, but works"
Parameters: "Lots of symbols ~@#$%^&*()_+<>?./`~!, but works"
實際上是if %1 . ==.
if %1 . ==.
(note the .
after %1
) back then. (注意
.
之后%1
)當年。 你可以在Windows 7中使用它,它應該工作。
用法示例:
if %1.==. (
echo No parameters have been provided.
) else (
echo Parameters:
echo %*
)
嘗試用引號括起來:
if "%1"=="" (
echo "nothing was passed"
) else (
echo "a parameter was passed"
dir
)
你可以把回聲拿出來,我只是把它們放在那里用於教育目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.