我正在使用Windows命令行环境编写一个批处理文件脚本,并希望更改文件中每次出现的一些文本(例如。“FOO”)和另一个(ex。“酒吧”)。最简单的方法是什么?有内置函数吗?
当前回答
我知道我迟到了。
就我个人而言,我喜欢以下的解决方案: ——http://www.dostips.com/DtTipsStringManipulation.php Snippets.Replace
我们还广泛使用重复数据删除功能,帮助我们每天通过SMTP发送大约500封电子邮件: ——https://groups.google.com/forum/ # ! / alt.msdos.batch.nt / sj8IUhMOq6o话题
这些都是本地工作,不需要额外的工具或实用程序。
替代者:
DEL New.txt
setLocal EnableDelayedExpansion
For /f "tokens=* delims= " %%a in (OLD.txt) do (
Set str=%%a
set str=!str:FOO=BAR!
echo !str!>>New.txt
)
ENDLOCAL
DEDUPLICATOR(注意使用-9作为ABA编号):
REM DE-DUPLICATE THE Mapping.txt FILE
REM THE DE-DUPLICATED FILE IS STORED AS new.txt
set MapFile=Mapping.txt
set ReplaceFile=New.txt
del %ReplaceFile%
::DelDupeText.bat
rem https://groups.google.com/forum/#!topic/alt.msdos.batch.nt/sj8IUhMOq6o
setLocal EnableDelayedExpansion
for /f "tokens=1,2 delims=," %%a in (%MapFile%) do (
set str=%%a
rem Ref: http://www.dostips.com/DtTipsStringManipulation.php#Snippets.RightString
set str=!str:~-9!
set str2=%%a
set str3=%%a,%%b
find /i ^"!str!^" %MapFile%
find /i ^"!str!^" %ReplaceFile%
if errorlevel 1 echo !str3!>>%ReplaceFile%
)
ENDLOCAL
谢谢!
其他回答
刚刚使用的FART(“查找和替换文本”命令行实用程序): 优秀的小免费软件的文本替换在一个大的文件集。
安装文件在SourceForge上。
使用的例子:
fart.exe -p -r -c -- C:\tools\perl-5.8.9\* @@APP_DIR@@ C:\tools
将在这个Perl发行版的文件中预览递归执行的替换。
唯一的问题是:屁的网站图标不是很有品位,精致或优雅;)
2017年更新(7年后)jagb在2011年Mikail Tunç的文章“放屁的简单方法-查找和替换文本”的评论中指出
正如Joe Jobs在评论(2020年12月)中指出的,例如,如果你想替换&A,你需要使用引号,以确保&不会被shell解释:
fart in.txt "&A" "B"
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
我不认为有任何内置命令可以做到这一点。我建议你下载Gnuwin32或UnxUtils,并使用sed命令(或只下载sed):
sed -c s/FOO/BAR/g filename
Replace—使用字符串替换替换子字符串 描述:使用字符串替换特性将子字符串替换为另一个字符串。这里显示的示例将字符串变量str中所有出现的“teh”拼写错误替换为“The”。
set str=teh cat in teh hat
echo.%str%
set str=%str:teh=the%
echo.%str%
脚本输出:
teh cat in teh hat
the cat in the hat
裁判:http://www.dostips.com/DtTipsStringManipulation.php # Snippets.Replace
我用过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
推荐文章
- 如何从字符串执行任意本机命令?
- 如何创建自己的URL协议?(例如:/ /……)
- Linux相当于Mac OS X的“open”命令
- 如何在Mac上的命令行安装JQ ?
- 在Windows批处理脚本中格式化日期和时间
- 映射一个网络驱动器供服务使用
- 确定bash中是否存在一个函数
- 如何在windows中使用命令提示符(cmd)列出文件。我试过在Linux中使用“ls”,但它显示一个错误?
- 在命令行中使用Firefox截取完整页面的截图
- 在pip install -U中“-U”选项代表什么
- 如何将参数转发到bash脚本中的其他命令?
- Windows上最好的免费c++分析器是什么?
- 如何在Windows上运行多个Python版本
- 运行计划任务的最佳方式
- Windows上Git文件的权限