我正在使用Windows命令行环境编写一个批处理文件脚本,并希望更改文件中每次出现的一些文本(例如。“FOO”)和另一个(ex。“酒吧”)。最简单的方法是什么?有内置函数吗?
当前回答
还可以在https://zoomicon.github.io/tranXform/上看到Replace和ReplaceFilter工具(包括源代码)。第二个是过滤器。
替换文件字符串的工具在VBScript中(需要Windows脚本主机[WSH]才能在旧的Windows版本中运行)
除非你用最新的Delphi(或FreePascal/Lazarus)重新编译,否则过滤器可能无法使用Unicode。
其他回答
这里的很多答案都帮我指明了正确的方向,但是没有一个适合我,所以我把我的解决方案贴出来。
我用的是内置PowerShell的Windows 7。下面是我用来查找/替换文件中所有文本实例的脚本:
powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | Out-File -encoding ASCII myFile.txt"
解释一下:
powershell会启动Windows 7中包含的powershell.exe - command”…是powershell.exe的命令行参数,其中包含要运行的命令 (gc myFile.txt)读取myFile.txt的内容(gc是Get-Content命令的缩写) -replace 'foo', 'bar'简单地运行replace命令将foo替换为bar | Out-File myFile.txt输出到文件myFile.txt -encoding ASCII防止将输出文件转录为unicode,正如注释所指出的那样
Powershell.exe应该已经是PATH语句的一部分,但如果不是,可以添加它。它在我机器上的位置是C:\WINDOWS\system32\WindowsPowerShell\v1.0
显然,现代的windows系统都内置了PowerShell,允许你直接使用
(Get-Content myFile.txt) -replace 'foo', 'bar' | Out-File -encoding ASCII myFile.txt
我不认为有任何内置命令可以做到这一点。我建议你下载Gnuwin32或UnxUtils,并使用sed命令(或只下载sed):
sed -c s/FOO/BAR/g filename
我更喜欢使用来自GNU实用程序的sed用于Win32,以下需要注意
单引号“在窗口中不起作用”,请使用“”代替 Sed -i不能在windows中工作,它需要文件交换
因此,sed在windows中查找和替换文件中的文本的工作代码如下所示
sed -e "s/foo/bar/g" test.txt > tmp.txt && mv tmp.txt test.txt
刚刚遇到了一个类似的问题-“搜索和替换文件中的文本”,但除了文件名和搜索/替换我都需要使用正则表达式。因为我不熟悉Powershell,想要保存我的搜索以供以后使用,所以我需要一些更“用户友好”的东西(如果它有GUI的话更可取)。
所以,在谷歌搜索:)时,我发现了一个很棒的工具——FAR(查找和替换)(不是屁)。
这个小程序有很好的GUI和支持正则表达式在文件名和文件内搜索。唯一的缺点是,如果你想保存你的设置,你必须以管理员身份运行程序(至少在Win7上)。
如果你使用的是支持。net 2.0的Windows版本,我会替换掉你的shell。PowerShell从命令行提供了. net的全部功能。还内置了许多命令小程序。下面的例子将解决你的问题。我使用的是命令的全名,还有更短的别名,但这给了你谷歌的一些东西。
(Get-Content test.txt) | ForEach-Object { $_ -replace "foo", "bar" } | Set-Content test2.txt
推荐文章
- 如何从终端/命令行调用VS代码编辑器
- 在Jar文件中运行类
- 我如何找到哪个程序正在使用端口80在Windows?
- 在Windows中有像GREP这样的模式匹配实用程序吗?
- 如何在Windows命令提示符下运行.sh ?
- 如何从命令行通过mysql运行一个查询?
- 如何从命令行在windows中找到mysql数据目录
- 如何从命令行安装cygwin组件?
- 如何更改Git日志日期格式
- 在没有事件源注册的情况下写入Windows应用程序事件日志
- Windows FINDSTR命令的未记录的特性和限制是什么?
- 无法在Windows上从/usr/local/ssl/openssl.cnf加载配置信息
- 使iTerm以与其他操作系统相同的方式翻译“元键”
- 用Windows任务调度器运行批处理文件
- GIT克隆在windows中跨本地文件系统回购