You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Batch脚本将文本文件中CR替换为CRLF求助

批量将CR替换为CRLF的Batch脚本方案

嘿,我刚好有个实用的方案帮你搞定批量替换的需求!纯Batch处理控制字符有点麻烦,所以我推荐在Batch里调用PowerShell的功能——既保留Batch批量处理的便捷性,又能精准搞定换行符的替换。

直接能用的脚本代码

@echo off
setlocal enabledelayedexpansion

:: 这里可以修改成你需要处理的文件类型,多个用空格分隔
set "target_files=*.txt *.log"

:: 遍历当前目录及所有子目录的目标文件(不需要子目录就去掉/R)
for /R %%f in (%target_files%) do (
    echo 正在处理: %%f
    :: 用PowerShell替换单独的CR为CRLF,写回原文件
    powershell -Command "(Get-Content '%%f' -Raw) -replace '`r(?!`n)', '`r`n' | Set-Content '%%f' -NoNewline"
)

echo 所有文件处理完成啦!
pause

脚本细节说明

  • 指定文件类型:修改set "target_files=*.txt *.log"这一行,比如只处理txt文件就写*.txt,多个类型用空格隔开就行。
  • 递归处理子目录:for /R会遍历当前目录下的所有子目录,如果只需要处理当前目录的文件,把/R删掉就好。
  • PowerShell核心逻辑:
    • Get-Content '%%f' -Raw:一次性读取整个文件,避免逐行处理时的换行符干扰。
    • -replace 'r(?!n)', 'rn':用正则匹配单独的CR(后面没跟LF的情况),替换成CRLF。(?!n)`是负向预查,确保不会把已经是CRLF的地方重复替换。
    • Set-Content '%%f' -NoNewline:写回文件时不额外加换行,避免文件末尾多出空行。

怎么用?

  1. 把上面的代码复制到记事本,保存成CRtoCRLF.bat(注意保存类型选「所有文件」,编码用ANSI)。
  2. 把这个bat文件放到你要处理的文件所在的目录(父目录也可以,要是开了递归的话)。
  3. 双击运行,等着它自动处理完就行!

额外小提示

  • 怕误操作的话,可以在处理前先备份文件,在for循环里加一行:
    copy "%%f" "%%f.bak" >nul
    
    这样每个文件都会生成一个.bak的备份。
  • 如果你的文件是UTF-8编码(带BOM),把PowerShell里的Set-Content改成Set-Content -Encoding UTF8,避免编码乱码。

内容的提问来源于stack exchange,提问作者Sarita Jadhav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:56:08