
[已解決]切割關卡文本的批處理代碼要怎樣寫我想將關卡集的文本按每個關卡切割,并提取作者姓名、關卡文件名稱、關序、關卡名稱對每次個關卡重命名。我寫的代碼如下,但運行后發現,命名關卡名稱不可靠,有部分不能提取,不知道問題出在哪里,請高手指點:
會出問題的關卡集:nclick="copycode($('code0'));">復制代碼
- @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

