Windows在Cygwin中使用路径和参数中的空格进行批处理

时间:2014-11-23 14:26:28

标签: bash batch-file cmd cygwin cygpath

考虑这个虚拟Windows批处理脚本:

echo %1

假设只是回应终端的第一个参数 假设其路径为resp。 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")。

如何在路径和参数中都有空格?

1 个答案:

答案 0 :(得分:0)

$ 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