[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 Five66 于 2023-11-28 06:34 编辑

来个偷懒的,保存为ansi编码的bat
仅处理当前路径中文件夹里的文本文件
要求文本文件编码为gbk,文件名不要有英文百分号或936代码页无法显示的字符,还有文本中如果包含^可能会被吞
改了下,已最大程度支持特殊字符(大概)
  1. @echo off&chcp 936 >nul
  2. for /d %%a in (*) do (
  3. for /f "delims=" %%b in ('dir /b /s /a-d "%%a\*.txt"') do (
  4. setlocal
  5. for /f "delims=" %%c in ('findstr /n .* "%%b"') do (
  6. set "line=%%c"
  7. setlocal enabledelayedexpansion
  8. if "!line:*:=!" == "" (endlocal&echo,) else (
  9. set "line=!line:*:=!"
  10. for /f "delims=" %%i in ("$!line:#=^#!") do endlocal&set "line=%%i"
  11. set o=
  12. call :aaa
  13. )
  14. )
  15. endlocal
  16. )>"%%~dpb_new_%%~nxb"
  17. )
  18. pause&exit/b
  19. :aaa
  20. setlocal enabledelayedexpansion
  21. set "line=!line:~1!"
  22. for /f "tokens=1* delims=^" %%x in ("$!line!") do (
  23. endlocal&set line=&set "tk1=%%x"&set "tk2=%%y"
  24. )
  25. setlocal enabledelayedexpansion
  26. set "tk1=!tk1:~1!"
  27. if "!tk1:~0,1!" == "#" (
  28. if "!tk2:~0,1!" == "#" (set "line=!tk2:~1!") else set "o=!o!!tk1!"&set "line=!tk2!"
  29. ) else (
  30. set "o=!o!!tk1!"
  31. set "line=!tk2!"
  32. )
  33. if defined line (
  34. for /f "delims=" %%i in ("$!line!") do (
  35. for /f "delims=" %%j in (""!o!"") do endlocal&set "line=%%i"&set "o=%%~j"
  36. )
  37. goto :aaa
  38. ) else echo,!o!&endlocal
  39. goto :eof
复制代码

TOP

返回列表