如何在以下命令中删除 .txt 文件中每行的尾随空格?我创建了以下脚本来删除每行中的第一个字符,但这会在每行末尾创建一个空格...
@echo off
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (C:\test\Index.txt) do (
set line=%%A
echo !line:~1! >> C:\test\Index1.txt
)
答案1
只需从源中删除多余的空间即可;)
@echo off
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (C:\test\Index.txt) do (
set line=%%A
echo(!line:~1!>>C:\test\Index1.txt
)
我还用来echo(
防止在删除第一个字符时行变为空。如果输出中ECHO
没有任何后续结果,则会出现消息。ECHO is off.
您的简单脚本在很多情况下都能正常工作。但是,如果您的输入包含字符,或者您需要保留空白行,它就会出现问题!
。这些问题有解决方案,但代码会变得更加复杂,速度也会变慢。
我用的是混合 JScript/批处理实用程序,称为 REPL.BAT每当我想修改文件内容时。它会在 stdin 上执行正则表达式搜索和替换,并将结果写入 stdout。
假设 REPL.BAT 位于您当前的目录中,或者更好的是,位于 PATH 中的某个位置,那么您的脚本可以被以下更快、更可靠的一行程序替换:
type "C:\test\Index.txt"|repl "^." "" >"C:\test\Index1.txt"
答案2
你可以在 Windows 中使用 sed:
sed "s/\s*$//" infile.txt>outfile.txt