我想制作脚本,该脚本在文件example.txt中按长度对所有行进行排序(某些行包含空格)。最长的一行将是第一行,最短的一行将在文档的末尾。脚本可以重写原始文档。谢谢 :-)
通过将每一行作为其自己的文件写入一个临时文件夹中,可以轻松而快速地完成此操作。然后使用DIR / B / OS按大小对文件(行)进行排序,使用FOR / F捕获结果,然后使用TYPE打印每个文件(行)。
@echo off
setlocal disableDelayedExpansion
set "file=example.txt"
set "tempLoc=sortLinesTemp"
md "%tempLoc%"
set "cnt=0"
for /f usebackq^ delims^=^ eol^= %%A in ("%file%") do (
set /a cnt+=1
set "ln=%%A"
setlocal enableDelayedExpansion
echo(!ln!>"%tempLoc%\f!cnt!"
endlocal
)
(for /f %%F in ('dir /b /o-s "%tempLoc%"') do type "%tempLoc%\%%F")>"%file%.new"
move /y "%file%.new" "%file%" >nul
rd /s /q "%tempLoc%"
type "%file%"
此解决方案将删除空行。空行可以保留更多代码。
此外,行长限制为少于8191个字符。此限制是任何纯本地批处理解决方案所固有的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句