找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20074|回复: 2

[文本处理] [已解决]批处理如何把文本内容按指定条件排序?

[复制链接]
发表于 2022-3-31 23:20:26 | 显示全部楼层 |阅读模式
a.txt

例如:a.txt
  1. ----------
  2. 123456
  3. bbjdik
  4. ----------
  5. 1210000
  6. bbjdi
复制代码
排序,输出a-1.txt

a-1.txt
  1. ----------
  2. 1210000
  3. bbjdi
  4. ----------
  5. 123456
  6. bbjdik
复制代码
已解决!
发表于 2022-4-1 17:06:05 | 显示全部楼层
本帖最后由 buyiyang 于 2022-4-2 00:55 编辑

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. for %%i in (*.txt) do (
  5. for /f "delims=" %%a in ('type "%%i"') do (set /p=%%a#<nul>>by.txt)
  6. for /f "delims=" %%b in (by.txt) do set "str=%%b"&&set "str=!str:----------#==!"
  7. for %%c in (!str!) do echo %%c>>byy.txt
  8. sort byy.txt >by.txt
  9. cd.>byy.txt
  10. for /f "delims=" %%x in ('type by.txt') do echo ----------#%%x>>byy.txt
  11. cd.>by.txt
  12. for /f "delims=" %%y in (byy.txt) do (
  13. set "strr=%%y"&&set "strr=!strr:#==!"
  14. for %%z in (!strr!) do >> by.txt echo,%%z
  15. )
  16. copy /y by.txt "%%~ni-1.txt"
  17. echo %%~ni-1.txt
  18. del /q by.txt
  19. del /q byy.txt
  20. )
  21. echo 按任意键结束&pause>nul
复制代码
水平有限,用的笨办法。希望你的目录下没有by.txt,byy.txt文件。

评分

参与人数 2技术 +2 收起 理由
czvde + 1 谢谢
went + 1 能包含空行就完美了

查看全部评分

发表于 2022-4-1 21:05:01 | 显示全部楼层
test.bat
  1. @echo off & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. set "s=----------"
  4. for %%i in (*.txt) do (
  5.         for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%%i"') do (
  6.                 if not "%%b"=="%s%" (
  7.                         if "!a!"=="1" (
  8.                                 set "b=%%b"
  9.                                 set /a "a=0"
  10.                         ) else call set "_!b!=%%_!b!%%;"%%b";"
  11.                 ) else set /a "a=1"
  12.         )
  13.         (
  14.                 for /f "tokens=1,2* delims==_" %%a in ('set _') do (
  15.                         echo %s%
  16.                         echo %%a
  17.                         set "_%%a="
  18.                         for %%d in (%%b) do echo.%%~d
  19.                 )
  20.         ) > "%%~ni-1.txt"
  21.         echo %%~ni-1.txt
  22. )
  23. pause&exit
复制代码

评分

参与人数 2技术 +2 收起 理由
czvde + 1 好用,谢谢
buyiyang + 1 厉害

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 04:34 , Processed in 0.021367 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表