| goto :ansi |
| |
| chcp 65001 |
| cls |
| |
| :ansi |
| @echo off |
| set /p "strFile=请拖入处理文本:" |
| |
| |
| setlocal enabledelayedexpansion |
| |
| if not exist !strFile! ( |
| echo;"!strFile!" 文件不找不到!! |
| exit /b |
| ) |
| |
| |
| endlocal |
| |
| rem 定义用于命名的字符表 |
| set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| set n=0 |
| |
| rem 定义可用于命名的字符表 |
| set tab="." [ + - ^" |
| |
| rem 例外情况定义 |
| set exception=Extra Button |
| set z= |
| set o= |
| |
| setlocal enabledelayedexpansion |
| |
| for /f "tokens=1* delims==" %%a in (!strFile!) do ( |
| |
| |
| for /f "tokens=1,2 delims= " %%K in ("1 !z!") do ( |
| endlocal |
| set z=%%L |
| set s1=%%a |
| set s2=%%b |
| setlocal enabledelayedexpansion |
| |
| ) |
| |
| |
| if defined z for %%k in (%exception%) do ( |
| if "#!s1:</%%k>=!" neq "#!s1!" ( |
| set z=!z:~1! |
| ) |
| ) |
| |
| for %%k in (%exception%) do ( |
| if "!s1:<%%k=!" neq "!s1!" ( |
| if "#!s2:/>=!" equ "#!s2!" ( |
| set z=!z!y |
| ) else ( |
| set o=o |
| ) |
| ) |
| ) |
| |
| |
| |
| if "!o!!z!!s1:~-5!" equ " name" ( |
| |
| set s3=!s2:^"= ! |
| |
| for /f "tokens=1 delims= " %%c in ("!s3!") do ( |
| |
| if not defined #%%~c ( |
| |
| call :getn !n! ss |
| set sa=%%~c |
| |
| rem 保留"."后面的尾巴 |
| if "!sa:.=!" neq "!sa!" set ss=!ss!.!sa:*.=! |
| |
| |
| for /f "tokens=1,2,3 delims= " %%x in ("!n! !ss! !z!") do ( |
| endlocal |
| set $%%x=%%y囧%%~c |
| set #%%~c=%%y |
| set /a n+=1 |
| set z=%%z |
| setlocal enabledelayedexpansion |
| |
| ) |
| ) |
| ) |
| |
| ) |
| |
| |
| |
| ) |
| |
| set/a n-=1 |
| |
| ( |
| for /f "tokens=1,*" %%a in (!strFile!) do ( |
| |
| endlocal |
| set stra=%%a |
| set str=%%b |
| setlocal enabledelayedexpansion |
| |
| if defined str ( |
| set "str=!stra! !str: =!" |
| for /l %%1 in (0,1,%n%) do ( |
| for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do ( |
| if "!str:%%c=!" neq "!str!" ( |
| if "!str:%%c=%%c!" equ "!str!" ( |
| set str=!str:"%%c"="%%b"! |
| set str=!str:"@%%c"="@%%b"! |
| set str=!str:"#%%c"="#%%b"! |
| if "!str:*%%c=!" neq "!str!" ( |
| call :parti %%c %%b |
| ) |
| )) |
| ) |
| ) |
| |
| ) else ( |
| |
| set str=%%a |
| |
| ) |
| |
| echo;!str! |
| |
| ) |
| |
| ) >结果.txt |
| |
| start 结果.txt |
| |
| rem 查看有多少个更改 |
| |
| set $ |
| |
| pause |
| |
| exit /b |
| |
| rem 计算临名字,可加上前缀,多个,A 到 ZZZZ 多个 |
| :getn |
| |
| (set L=%1 |
| set M=%1 |
| set %2=) |
| |
| :loop |
| set /a M=L %% 26 |
| set %2=!%2!!ASC:~%M%,1! |
| if !M! neq !L! set /a L=L/26&goto :loop |
| goto :eof |
| |
| rem 非双引号位置处理 如:#xxxx+ #xxxx[ ] #xxxx.dir |
| :parti |
| for %%a in (!tab!) do ( |
| if "!str:%1%%~a=!" neq "!str!" ( |
| if "!str:%1%%~a=%1%%~a!" equ "!str!" ( |
| set str=!str:@%1%%~a=@%2%%~a! |
| set str=!str:#%1%%~a=#%2%%~a! |
| if "!str:*%1=!" equ "!str!" ( |
| goto :partiE |
| ) |
| ) |
| ) |
| ) |
| :partiE |
| |
| goto :eofCOPY |