如何用Windows批处理替代sed.exe将文本文件中逗号替换为句号
用Windows自带工具替代sed实现逗号转句号的批处理方案
我来给你几个不用sed、纯靠Windows自带工具就能实现的方案,都是批处理能直接调用的,完全不用额外安装软件:
方法1:PowerShell 嵌入批处理(推荐,兼容性佳)
现在Win7及以上系统默认都带PowerShell,直接把PowerShell命令嵌在批处理里就行,不用额外写脚本文件,一步到位:
@echo off :: 设置输入输出文件名 set "input=clearances.txt" set "output=clearance_out.txt" :: 调用PowerShell执行全局替换 powershell -Command "(Get-Content '%input%') -replace ',', '.' | Set-Content '%output%'" echo 替换完成!输出文件已生成:%output% pause
说明
Get-Content读取输入文件的全部内容,*-replace* ',', '.'会把所有逗号替换成句号(PowerShell的*-replace*默认就是全局替换,和sed的*g*参数效果一致)- 最后用
Set-Content把替换后的内容写入输出文件 - 测试你的示例文件
clearances.txt(内容:-12,7 -5,6 -7,6 -3,9),运行后输出文件会变成-12.7 -5.6 -7.6 -3.9,完全符合需求
方法2:VBScript 脚本(兼容老旧Windows系统)
如果需要兼容WinXP这类没有PowerShell的系统,可以用VBScript实现,同样是Windows自带的工具:
步骤1:创建替换脚本
新建一个名为replace.vbs的文件,写入以下内容:
Set objFSO = CreateObject("Scripting.FileSystemObject") ' 读取输入文件内容 Set objFile = objFSO.OpenTextFile(WScript.Arguments(0), 1) strContent = objFile.ReadAll objFile.Close ' 全局替换逗号为句号 strContent = Replace(strContent, ",", ".") ' 写入替换后的内容到输出文件 Set objFile = objFSO.OpenTextFile(WScript.Arguments(1), 2, True) objFile.Write strContent objFile.Close
步骤2:批处理调用脚本
新建批处理文件(比如replace.bat),写入以下内容:
@echo off set "input=clearances.txt" set "output=clearance_out.txt" ' 调用VBS脚本执行替换 cscript //nologo replace.vbs "%input%" "%output%" echo 替换完成!输出文件:%output% pause
说明
- VBS的
*Replace*函数默认就是全局替换所有匹配的字符,刚好满足需求 *//nologo*参数让cscript运行时不显示logo信息,输出更干净
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

