2010-09-28 125 views
4

在Windows批處理文件,你可以使用這個語法來進行搜索&的變量替換:如何在子字符串包含等號時執行子字符串替換?

set myvar=%myvar:foo=bar% 

如何然而做到這一點,當「富」或「 - 」包含等號?用^轉義它似乎不起作用...

謝謝。

+1

可能重複的[逃逸一個等於在DOS批處理字符串替換命令符號(http://stackoverflow.com/問題/ 2499646/escaping-an-equal-sign-in-dos-batch-string-replacement-command) – 2010-09-28 14:39:31

回答

1

而不是與cmd.exe的怪癖對抗,爲什麼不使用vb​​script呢?

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 
+0

或者JScript或者PowerShell或Perl或者....很多問題都值得「不要這樣做,使用這反而「鍵入答案,我不認爲這是其中之一。 – 2010-09-28 14:38:36

+0

那麼?如果OP對使用什麼工具沒有限制,他可以自由採用他想要的任何解決方案。另外,我只是講了cmd.exe限制和怪癖的真相。 – ghostdog74 2010-09-28 14:49:16

+0

其實,我對我的腳本可能執行的操作有限制,因爲它們將部署在客戶服務器上的生產環境中。我同意這會很舒服。 – Benoit 2010-09-28 15:25:49