如何使用批处理脚本按长度对行进行排序?

3

我想制作脚本,该脚本在文件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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章