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

[文本处理] [已解决]切割关卡文本的批处理代码要怎样写?

我想将关卡集的文本按每个关卡切割,并提取作者姓名、关卡文件名称、关序、关卡名称对每次个关卡重命名。
我写的代码如下,但运行后发现,命名关卡名称不可靠,有部分不能提取,不知道问题出在哪里,请高手指点:
  1. @echo off
  2. COLOR 1F
  3. set F1=%~nx1
  4. set /p F1=请输入源目录:
  5. set F2=Author
  6. echo.
  7. echo 1、按关卡切割文本(关卡较大则切割时间较长),请稍候 ...
  8. echo.
  9. if not exist %F2% md %F2%
  10. setlocal enabledelayedexpansion
  11. for /f "delims=" %%a in ('dir/s /b /on %F1%\*.*')do (
  12. for /f "delims=" %%i in (%%a)do (
  13. set m=%%i
  14. if "!m:~0,5!" == "Level" set x=!m!& echo.>%F2%\%%~na_!x:~5!.txt
  15.          if not "!m:~0,5!" == "Level" echo %%i>>%F2%\%%~na_!x:~5!.txt
  16. )
  17. )
  18. :: 将关卡序号改为四位数
  19. setlocal enabledelayedexpansion
  20. for /f "tokens=1-3 delims=_" %%i in ('dir /b /o:n %F2%\')do (
  21. set m=00000%%~nj
  22. ren "%F2%\%%i_%%j" "%%i_!m:~-5!.txt"
  23. )
  24. echo 2、加入关卡名称 ...
  25. setlocal enabledelayedexpansion
  26. for /f "delims=" %%a in ('dir /b /o %F2%\*.*')do (
  27. set n=%%a
  28. for /f "delims=" %%i in (%F2%\%%a)do (
  29. set m=%%i
  30. if "!m:~0,5!" == "Title" ren "%F2%\%%a" "!n:~0,-4!_!m:~7!.txt"
  31. )
  32. )
  33. :: 剔除空格
  34. setlocal enabledelayedexpansion
  35. for /f "delims=" %%a in ('dir/s /b /on %F2%\*.txt')do (
  36. set "var=%%~na"
  37. set var=!var:^ ^ =-!
  38. set var=!var:^ =-!
  39. set var=!var:--=-!
  40. ren "%%a" !var!.txt
  41. )
  42. echo 3、加入作者名称 ...
  43. setlocal enabledelayedexpansion
  44. for /f "delims=" %%a in ('dir/s /b /on %F2%\*.*')do (
  45. for /f "delims=" %%i in (%%a)do (
  46. set m=%%i
  47. if "!m:~0,6!" == "Author" set m=!m!&ren "%%a" "!m:~8!_%%~na.txt"
  48. )
  49. )
  50. :: 替换字符
  51. setlocal enabledelayedexpansion
  52. for /f "delims=" %%a in ('dir/s /b /on %F2%\*.txt')do (
  53. set "var=%%~na"
  54. set var=!var:^ ^+^ =,!
  55. set var=!var:^ ^+=,!
  56. set var=!var:^+^ =,!
  57. set var=!var:^+=,!
  58. set var=!var:^ ^ =-!
  59. set var=!var:^ =-!
  60. set var=!var:--=-!
  61. ren "%%a" !var!.txt
  62. )
  63. echo.
  64. echo 操作完毕!请检查命名情况,并修正!
  65. echo.
  66. echo 按任意键打开 %F2% 目录!
  67. pause>nul
  68. start %F2%
  69. goto:eof
复制代码
会出问题的关卡集:

回复 2# xxpinqz


谢谢回帖!

我用TextForever转换,或用记事本另存为ansi格式,还是不行。

我猜想:是否一个文本中就包括了两种格式,如果是,有什么工具可彻底转换呢?

还请高手伸出援手。

TOP

感谢各位高手相助 !问题解决了。
特别是“狄钦dQ”耐心测试并详细讲解问题发生的原因;“WHY”优化并重编了代码;“codegay、Batcher”介绍了Notepad++使用方法……
再次谢谢!!!

TOP

返回列表