我需要在 Windows 系统上的文本文件中每 66 行插入文本(具体来说是 FormFeed 字符,ASCII 值 12 或 0xC)。是否有内置工具可以完成此操作?
答案1
使用 PowerShell、JScript 或 VBScript 可以轻松完成。但是如果您想留在批处理世界中,那么您将需要某种类型的非标准实用程序或复杂的批处理程序。
用一个混合 JScript/批处理实用程序,称为 REPL.BAT在 stdin 上执行正则表达式搜索和替换,并将结果写入 stdout:
type "file.txt"|repl "(.*\n){66}" "$&\x0C" mx >"file.txt.new"
move /y "file.txt.new" "file.txt" >nul
以上假设您在当前目录中有 REPL.BAT,或者更好的是,在您的路径中的某个地方。
答案2
如果您允许 Powershell 内置于较新的 Windows 版本,则可以从 Powershell 中执行以下操作:
(gc input.txt -raw) -replace '(.*\n){66}', "`$0$([char]0x0c)" > output.txt
如果您从 cmd.exe 运行,则可以像这样运行:
powershell (gc input.txt -raw) -replace '(.*\n){66}', \"`$0$([char]0x0c)\" > output.txt
请注意,使用>
重定向时,Powershell 将使用“Unicode 编码”。如果您想要不同的编码,可以通过管道传输out-file -encoding [oem|default|ascii|utf8]
(有关编码的更多信息这里,在“-Encoding”标题下)。
例如:
(gc input.txt -raw) -replace '(.*\n){66}', "`$0$([char]0x0c)" | out-file -encoding utf8