我正在使用Windows命令行环境编写一个批处理文件脚本,并希望更改文件中每次出现的一些文本(例如。“FOO”)和另一个(ex。“酒吧”)。最简单的方法是什么?有内置函数吗?
当前回答
Powershell命令-
获取文件的内容,并将其替换为其他文本,然后存储到另一个文件中
命令1 | ForEach-Object {$_.replace("some_text","replace_text").replace("some_other_text","replace_text")} | Set-Content filename2.xml
将另一个文件复制到原始文件中
Command2
复制-项目-路径filename2.xml -目标文件名.xml -PassThru .xml
删除另一个文件
命令3
Remove-Item filename2.xml
其他回答
对我来说,为了确保不改变编码(从UTF-8),保持重音…唯一的方法是在之前和之后提到默认编码:
powershell -Command "(gc 'My file.sql' -encoding "Default") -replace 'String 1', 'String 2' | Out-File -encoding "Default" 'My file.sql'"
看看是否有任何类似于cmd.exe的sed实用程序,它要求在Windows下的sed等效,应该也适用于这个问题。执行概要:
它可以在批处理文件中完成,但它并不漂亮 如果你有足够的时间安装或复制一个exe文件,很多可用的第三方可执行文件都可以帮你完成 可以用VBScript或类似的东西,如果你需要能够运行在Windows盒子没有修改等。
我不认为有任何内置命令可以做到这一点。我建议你下载Gnuwin32或UnxUtils,并使用sed命令(或只下载sed):
sed -c s/FOO/BAR/g filename
在Windows 7+的。bat中使用powershell
编码utf8是可选的,适合网站
@echo off
set ffile='myfile.txt'
set fold='FOO'
set fnew='BAR'
powershell -Command "(gc %ffile%) -replace %fold%, %fnew% | Out-File %ffile% -encoding utf8"
还可以在https://zoomicon.github.io/tranXform/上看到Replace和ReplaceFilter工具(包括源代码)。第二个是过滤器。
替换文件字符串的工具在VBScript中(需要Windows脚本主机[WSH]才能在旧的Windows版本中运行)
除非你用最新的Delphi(或FreePascal/Lazarus)重新编译,否则过滤器可能无法使用Unicode。
推荐文章
- 如何合并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