簡體   English   中英

從 cmd 和 PowerShell 將分號作為參數傳遞給 .bat 文件

[英]Passing a semicolon as a parameter to a .bat file from both cmd and PowerShell

這個問題看起來很簡單,但即使在網上搜索了幾個小時后,我也無法找到解決方案......

我有一個批處理文件 test.bat

set MY_VARIABLE=%~1
echo %MY_VARIABLE%

關鍵是我想用分號作為輸入參數來調用這個程序,即.\\test.bat ";" , 來自 cmd 和 Windows PowerShell。 雖然這在 cmd 中運行良好,但 PowerShell 似乎沒有得到任何輸入。 有什么辦法可以同時為兩者工作嗎?

這是因為命令行語法 分號是多個分隔符之一,它將命令行拆分為單詞: a;b將被解釋為兩個單獨的參數a ( %1 ) 和b ( %2 )。

因此,需要報價。 由於 Powershell 對字符串文字使用引號(Powershell 在傳遞參數時會在后台自行重新引用),因此您需要將它們包含在字符串中:

.\test.bat '";"'
# or
.\test.bat "`";`""

或者正如@mklement0 指出的那樣, 停止解析符號--%也是一個選項:

.\test.bat --% ";"

請注意,這是特定於 Powershell 語法的。

在 CMD 中,這就足夠了:

test.bat ";"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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