0

次のダミーの 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 

これはunquotedhelloに渡されるようになりました (どちらかで)。win.bat"/cygdrive/c/te st/win.bat" "hello"

パスと引数の両方にスペースを入れるにはどうすればよいですか?

4

1 に答える 1

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
于 2014-11-23T18:16:15.623 に答える