4

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

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

echo %1 
echo %2
echo %3

Windows cmd 调用

file.bat "a;b"  c 

输出

 "a;b"
 c
 empty

Cygwin 调用

 ./file.bat "a;b" c

输出

 a
 b
 c
4

2 回答 2

7

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

./file.bat "a;b " c

输出

"a;b"
c

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

 %~1 
于 2013-07-20T13:06:56.083 回答
1

最近与引用的斗争使我想到了另一种技巧。

创建一个临时批处理文件并将其传递给 cmd。(我在这个例子中使用了“filex.bat”)。

echo 'call file.bat "a;b" c' > filex.bat ; cmd /c filex.bat ; rm filex.bat
于 2021-09-24T15:33:18.853 回答