我想将关卡集的文本按每个关卡切割,并提取作者姓名、关卡文件名称、关序、关卡名称对每次个关卡重命名。
我写的代码如下,但运行后发现,命名关卡名称不可靠,有部分不能提取,不知道问题出在哪里,请高手指点:- @echo off
-
- COLOR 1F
-
-
- set F1=%~nx1
-
- set /p F1=请输入源目录:
- set F2=Author
-
- echo.
-
-
- echo 1、按关卡切割文本(关卡较大则切割时间较长),请稍候 ...
- echo.
- if not exist %F2% md %F2%
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir/s /b /on %F1%\*.*')do (
- for /f "delims=" %%i in (%%a)do (
- set m=%%i
- if "!m:~0,5!" == "Level" set x=!m!& echo.>%F2%\%%~na_!x:~5!.txt
- if not "!m:~0,5!" == "Level" echo %%i>>%F2%\%%~na_!x:~5!.txt
- )
- )
-
- :: 将关卡序号改为四位数
- setlocal enabledelayedexpansion
- for /f "tokens=1-3 delims=_" %%i in ('dir /b /o:n %F2%\')do (
- set m=00000%%~nj
- ren "%F2%\%%i_%%j" "%%i_!m:~-5!.txt"
- )
-
- echo 2、加入关卡名称 ...
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /o %F2%\*.*')do (
- set n=%%a
- for /f "delims=" %%i in (%F2%\%%a)do (
- set m=%%i
- if "!m:~0,5!" == "Title" ren "%F2%\%%a" "!n:~0,-4!_!m:~7!.txt"
- )
- )
-
- :: 剔除空格
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir/s /b /on %F2%\*.txt')do (
- set "var=%%~na"
- set var=!var:^ ^ =-!
- set var=!var:^ =-!
- set var=!var:--=-!
- ren "%%a" !var!.txt
- )
-
- echo 3、加入作者名称 ...
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir/s /b /on %F2%\*.*')do (
- for /f "delims=" %%i in (%%a)do (
- set m=%%i
- if "!m:~0,6!" == "Author" set m=!m!&ren "%%a" "!m:~8!_%%~na.txt"
- )
- )
-
- :: 替换字符
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir/s /b /on %F2%\*.txt')do (
- set "var=%%~na"
- set var=!var:^ ^+^ =,!
- set var=!var:^ ^+=,!
- set var=!var:^+^ =,!
- set var=!var:^+=,!
- set var=!var:^ ^ =-!
- set var=!var:^ =-!
- set var=!var:--=-!
- ren "%%a" !var!.txt
- )
-
-
- echo.
- echo 操作完毕!请检查命名情况,并修正!
- echo.
- echo 按任意键打开 %F2% 目录!
- pause>nul
- start %F2%
- goto:eof
复制代码 会出问题的关卡集: |