我正在使用Windows命令行环境编写一个批处理文件脚本,并希望更改文件中每次出现的一些文本(例如。“FOO”)和另一个(ex。“酒吧”)。最简单的方法是什么?有内置函数吗?
当前回答
创建文件replace.vbs:
Const ForReading = 1
Const ForWriting = 2
strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.Write strNewText 'WriteLine adds extra CR/LF
objFile.Close
要使用这个修改后的脚本(我们称之为replace.vbs),只需在命令提示符中键入类似于下面的命令:
cscript替换。vbs "C:\Scripts\Text.txt" "Jim " "James "
其他回答
如果你使用的是支持。net 2.0的Windows版本,我会替换掉你的shell。PowerShell从命令行提供了. net的全部功能。还内置了许多命令小程序。下面的例子将解决你的问题。我使用的是命令的全名,还有更短的别名,但这给了你谷歌的一些东西。
(Get-Content test.txt) | ForEach-Object { $_ -replace "foo", "bar" } | Set-Content test2.txt
Power shell命令的工作就像一个魅力
(
test.txt | ForEach-Object { $_ -replace "foo", "bar" } | Set-Content test2.txt
)
我用过perl,它的效果非常好。
perl -pi.orig -e "s/<textToReplace>/<textToReplaceWith>/g;" <fileName>
. trans是它将附加到原始文件的扩展名
对于许多匹配的文件,如*.html
for %x in (<filePattern>) do perl -pi.orig -e "s/<textToReplace>/<textToReplaceWith>/g;" %x
dostips.com上的BatchSubstitute.bat是一个使用纯批处理文件进行搜索和替换的示例。
它使用FOR、FIND和CALL SET的组合。
包含“&<>]|^”字符的行可能会被错误处理。
提供搜索和替换函数的两个批处理文件已经由Stack Overflow成员dbenham和aacini使用Windows中的本机内置jscript编写。
与普通批处理脚本相比,它们在处理大文件时既健壮又非常迅速,而且用于基本的文本替换也更简单。它们都有Windows正则表达式模式匹配。
类似于此的帮助批处理文件称为repl.bat(由dbenham编写)。 使用L文字开关的例子: This is FOO here|repl "FOO" "BAR" L Echo和一个文件: type "file.txt" |repl "FOO" "BAR" L >"newfile.txt" 这个类似grep的帮助批处理文件称为findrepl.bat(由aacini编写)。 激活正则表达式的示例: This is FOO This |findrepl "FOO" "BAR" Echo和一个文件: type "file.txt" |findrepl "FOO" "BAR" >"newfile.txt"
当将它们放在路径上的文件夹中时,它们都将成为强大的系统范围实用程序,或者可以在与批处理文件相同的文件夹中使用,或者从cmd提示符中使用。
它们都有不区分大小写的开关和许多其他功能。
推荐文章
- 如何合并2 JSON对象从2个文件使用jq?
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- 为什么这个Windows批处理文件只执行第一行,而在命令shell中执行所有三行?
- 如何将文件内容读入批处理文件中的变量?
- 如何触发命令行PHP脚本的XDebug分析器?
- 环境变量存储在Windows注册表的哪里?
- 有一个好的Valgrind Windows的替代品吗?
- Maven命令行如何指向特定的settings.xml为单个命令?
- Windows和Linux上的c++编译:ifdef开关
- 如何验证批处理文件中是否存在一个文件?
- 如何循环通过文件匹配通配符在批处理文件
- 异步运行Windows批处理文件命令
- 我怎么能显示线在公共(反向差异)?
- XAMPP -端口80被PID 4的“无法打开进程”使用!12