考虑这个虚拟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"
)。
如何在路径和参数中都有空格?
答案 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