最简单的方法(假设您的文本文件名为data.txt):
more +1 "data.txt" > "data_NEW.txt"
这将行的长度限制为大约 65535 个字节/字符,并将文件限制为大约 65535 行。此外,TABs 扩展为 SPACEs(默认为 8)。
您可以改用for /F 循环(此处需要奇怪的不带引号的选项字符串语法,以禁用默认的eol 字符; 以不忽略以此类开头的行):
@echo off
(
for /F usebackq^ skip^=1^ delims^=^ eol^= %%L in ("data.txt") do echo(%%L
) > "data_NEW.txt"
这会将行的长度限制为大约 8190 个字符/字节,并且会丢失空行。
您可以将for /F 循环与findstr 一起使用来保留空行(findstr 在每一行添加一个行号加上:,所以for /F 看不到空行;一切都在(首先)然后在循环体中删除冒号;切换延迟扩展确保不会丢失!):
@echo off
(
for /F "skip=1 delims=" %%L in ('findstr /N "^" "data.txt"') do (
set "LINE=%%L"
setlocal EnableDelayedExpansion
echo(!LINE:*:=!
endlocal
)
) > "data_NEW.txt"
这仍然将行的长度限制为大约 8190 个字符/字节。
或者您可以将输入重定向< 与set /P 一起使用(为此需要提前确定总行数):
@echo off
for /F %%C in ('find /C /V "" ^< "data.txt"') do set "COUNT=%%C"
setlocal EnableDelayedExpansion
(
for /L %%I in (1,1,%COUNT%) do (
set "LINE=" & set /P LINE=""
if %%I gtr 1 echo(!LINE!
)
) < "data.txt" > "data_NEW.txt"
endlocal
这将行的长度限制为大约 1022 个字符/字节。
要将原始文件替换为修改后的文件,只需执行以下操作:
move /Y "data_NEW.txt" "data.txt" > nul