簡體   English   中英

Windows 7批處理文件:如何檢查參數是否已傳遞給批處理文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM