scripting - 在批处理脚本中转义双引号

标签 scripting parameters batch-file escaping quotes

如何将批处理文件参数中的所有双引号替换为转义双引号?这是我当前的批处理文件,它在字符串中扩展了所有命令行参数:

@echo off
call bash --verbose -c "g++-linux-4.1 %*"

然后它使用该字符串调用 Cygwin 的 bash,执行 Linux 交叉编译器。不幸的是,我将这样的参数传递到我的批处理文件中:

"launch-linux-g++.bat" -ftemplate-depth-128 -O3 -finline-functions 
-Wno-inline -Wall  -DNDEBUG   -c 
-o "C:\Users\Me\Documents\Testing\SparseLib\bin\Win32\LinuxRelease\hello.o" 
"c:\Users\Me\Documents\Testing\SparseLib\SparseLib\hello.cpp"

传入的第一个路径周围的第一个引号会提前结束传递给 GCC 的字符串,并将其余参数直接传递给 bash(这会失败)。

我想如果我可以将参数连接成一个字符串然后转义引号它应该可以正常工作,但我很难确定如何做到这一点。有谁知道吗?

最佳答案

批处理脚本中的转义字符是^。但对于双引号字符串,请将引号加倍:

"string with an embedded "" character"

关于scripting - 在批处理脚本中转义双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562038/

相关文章:

string - 我只想使用 powershell 替换字符串的某些字符

python - 支持单个字符串和数组作为一个参数

windows - windows中的START命令——系统无法接受启动命令参数1

shell - 转义字符串

xml - 使用脚本将文本文件转换为 xml

postgresql - 使用 PowerQuery 的动态变量

java - 对 Java 的 OOP 不确定

batch-file - DOS BAT 文件相当于 Unix basename 命令?

csv - 批处理脚本 : Quicker ECHO output to a csv file in a FOR loop?

PowerShell - 响应命令响应