簡體   English   中英

Cygwin中的Windows批處理在路徑和參數中帶有空格

[英]Windows batches in Cygwin with spaces in path and arguments

考慮以下虛擬Windows批處理腳本:

echo %1

假定只是向終端回顯其第一個參數。
假設其路徑分別為。 Windows的Cygwin風格是:

c:\test\win.bat 
/cygdrive/c/test/win.bat 

從Cygwin bash中:

$ c:\test\win.bat  "hello world"
"hello world"

因此,引號可以正確識別單個參數。

但是現在讓我們在路徑中引入空格:

"c:\te st\win.bat" 
/cygdrive/c/te\ st/win.bat 

然后:

$ /cygdrive/c/te\ st/win.bat "hello world" 

給出:

"C:\te" is not recognized as an internal or external command, operable program or batch file.

同樣的情況發生在:

$ "/cygdrive/c/te st/win.bat" "hello world" 

應該注意的是:

$ /cygdrive/c/te\ st/win.bat "hello"
hello 

hello ,現在傳遞給win.bat引號(以及"/cygdrive/c/te st/win.bat" "hello" )。

如何在路徑和參數中都留有空格?

$ echo "echo %~1" > /cygdrive/c/te\ st/win.bat    
$ cat /cygdrive/c/te\ st/win.bat
echo %~1
$ cmd /c $(echo "c:\te st\win.bat"| sed 's/ /^ /g') "aaa bbb"

C:\Users\Me>echo aaa bbb
aaa bbb

暫無
暫無

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

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