我想在文本文件中搜索一个值并替换它,如下所示:
搜索value=
次发现:
value=1122
将值(1122)替换为其他内容(3344),结果:
value=3344
另外,替换整行左边的内容会很好,这意味着value=
之后的任何内容也会替换为3344。
答案 0 :(得分:0)
Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout
'Remove ^ from quoting command line. Quote, ampersand and brackets
Pttn = Replace(Arg(2), "^(", "(")
Pttn = Replace(Pttn, "^)", ")")
Pttn = Replace(Pttn, "^&", "&")
Pttn = Replace(Pttn, "^""", """")
Set regEx1 = New RegExp
If Instr(LCase(Arg(1)), "i") > 0 then
regEx1.IgnoreCase = True
Else
regEx1.IgnoreCase = False
End If
regEx1.Global = False
regEx1.Pattern = Pttn
Do Until Inp.AtEndOfStream
Line=Inp.readline
Line = RegEx1.Replace(Line, Arg(3))
outp.writeline Line
Loop
使用
cscript //nologo c:\folder\filter.vbs replace i "=" "No equal sign" < "%systemroot%\win.ini" > OutputFile.txt
仅对标准输入和标准输出进行读写。这些仅在命令提示符中可用。
filter <inputfile >outputfile
filter <inputfile | other_command
other_command | filter >outputfile
other_command | filter | other_command
<强>替换强>
filter replace {i|n} expression replace
filter repl {i|n} expression replace
使用正则表达式查找和替换文本。
还用于从文件中提取子字符串。
表达式中的&符号和括号必须使用插入符进行转义。不要逃避插入。使用十六进制代码\ x22作为引号。
<强> SearchOptions 强>
i - ignore case
n - none
<强>表达式强>
https://msdn.microsoft.com/en-us/subscriptions/f97kw5ka(v%3Dvs.84).aspx
<强>替换强>
要替换的文字。使用$ 1,$ 2,$ ...,$ n在替换字符串中指定子匹配
示例强>
filter replace i "=" "No equal sign" < "%systemroot%\win.ini"
这将在方括号内搜索文本,并用cat替换该行,后跟括号内的文本
Filter replace i "^\[^(.*^)\]" "cat$1" < %windir%\win.ini
这将搜索从第11个字符到行尾的任何文本和打印。
Filter replace i "^.{10}^(.*^)$" "$1" < %windir%\win.ini
这将搜索CSV文件并打印第二个和第四个字段
Filter replace i "^.+,^(.+^),.+,^(.+^)$" "$1,$2" < csv.txt