在cygwin的参数中调用带分号的批处理文件

pse*_*udo 4 windows cygwin batch-file

我需要从CYGWIN内部调用批处理文件,但其中一个参数是包含分号的类似路径的字符串.通常在Windows命令行中,可以将该参数括在引号中(稍后需要对其进行修剪).然而,这种方法并不适用于cygwin

批量示例(回显前3个参数)

echo %1 
echo %2
echo %3
Run Code Online (Sandbox Code Playgroud)

Windows cmd调用

file.bat "a;b"  c 
Run Code Online (Sandbox Code Playgroud)

输出继电器

 "a;b"
 c
 empty
Run Code Online (Sandbox Code Playgroud)

Cygwin打电话

 ./file.bat "a;b" c
Run Code Online (Sandbox Code Playgroud)

产量

 a
 b
 c
Run Code Online (Sandbox Code Playgroud)

pse*_*udo 7

在引号内的任何位置包含空格将确保正确传递带分号或逗号的参数.虽然我不得不承认我不理解这种行为,但它似乎完美无缺.

./file.bat "a;b " c
Run Code Online (Sandbox Code Playgroud)

产量

"a;b"
c
Run Code Online (Sandbox Code Playgroud)

正如@jeb在他的评论中提到的那样,可以通过访问这样的参数变量来修改括号

 %~1 
Run Code Online (Sandbox Code Playgroud)