当子字符串包含等号时如何进行子字符串替换?

4
在Windows批处理文件中,您可以使用以下语法对变量执行搜索和替换操作:
set myvar=%myvar:foo=bar%

然而,当“foo”或“bar”包含等号时,该怎么办?用^进行转义似乎不起作用...

谢谢。


1个回答

1

与其与cmd.exe的怪癖作斗争,为什么不使用vbscript呢?

Set objArgs = WScript.Arguments
strOld=objArgs(0)
strNew=objArgs(1)
str=Replace(WScript.StdIn.ReadAll,vbCrLf,"")
WScript.Echo Replace(str,strOld,strNew)

将上述内容保存为 replace.vbs

用法:

C:\test>echo test| cscript //nologo replace.vbs te mi
mist

或者 JScript 或 PowerShell 或 Perl 或其他...... 很多问题都值得得到“不要那样做,应该用这个代替”的答案,但我认为这个问题不是其中之一。 - Logan Capaldo
那又怎样?如果 OP 没有使用工具的限制,他可以自由选择任何解决方案。此外,我只是说出了 cmd.exe 的限制和怪癖。 - ghostdog74
实际上,我的脚本确实有限制,因为它们将在客户服务器的生产环境中部署。虽然我同意这会非常方便。 - Benoit
Windows机器默认安装了VBScript。 - ghostdog74

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接