繁体   English   中英

在Windows命令提示符中转义双引号

[英]Escaping double-quotes in the windows command prompt

我有一个包含以下内容的文件

$(CP) "$(O_SSL)" "$(INSTALLTOP)\bin"
$(CP) "$(O_CRYPTO)" "$(INSTALLTOP)\bin"

我想添加以下几行(顺序无关紧要)

$(CP) "$(SSL).pdb" "$(INSTALLTOP)\bin"
$(CP) "$(CRYPTO).pdb" "$(INSTALLTOP)\bin"

因此,使用perl,我创建了以下命令(必须在命令提示符下运行):

perl -pi.bak -e 's#\t\$\(CP\) "\$\(O_([^)]+)\)" "\$\(INSTALLTOP\)\\bin"#$&\n\t\$(CP) "\$($1).pdb" "\$(INSTALLTOP)\\bin#g' ntdll.mak

但我得到以下错误

Can't find string terminator "'" anywhere before EOF at -e line 1.
The system cannot find the path specified.

我试过用双引号替换单引号(并使所有内部双引号加倍)

perl -pi.bak -e "s#\t\$\(CP\) ""\$\(O_([^)]+)\)"" ""\$\(INSTALLTOP\)\\bin""#$&\n\t\$(CP) ""\$($1).pdb"" ""\$(INSTALLTOP)\\bin""#g" ntdll.mak

但我只是得到以下错误

Substitution pattern not terminated at -e line 1.

我应该怎么做? (...我不想创建一个单独的脚本文件,但是如果没有其他(合理的)方法,我会做的)

我通过对文字双引号使用八进制转义来解决此问题

perl -pi.bak -e "s#\t\$\(CP\) \042\$\(O_([^)]+)\)\042 \042\$\(INSTALLTOP\)\\bin\042#$&\n\t\$(CP) \042\$(LIB_D)\\\$($1).pdb\042 \042\$(INSTALLTOP)\\bin\042#g" ntdll.mak

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM