
[已解決]文件名或路徑%^怎么進行正常處理最后由 1139054012 于 -6-5 13:40功能是實現了,考慮到各種路徑特殊符號【❤★!@#$%^&*()_+等測試其他都解決了,就差%^不行,自動被識別bat內的指令沒方法了,看論壇大佬能否改成完美版,無論路徑和文件夾再怎么用特殊字符,都能完美獲取文件名,進行操作
nclick="copycode($('code0'));">復制代碼
- @echo off
- chcp 65001 >nul
- :: 創建分類目錄
- mkdir 簡體 2>nul
- mkdir 繁體 2>nul
- :: 初始化計數器
- set /a success=0, fail=0
- :: 第一輪處理:精確匹配_字幕01和_字幕02
- for %%e in (ass srt ssa) do (
- for /f delims= %%f in ('dir /b /a-d *_字幕01*.%%e 2^>nul') do (
- call :safe_move %%f 簡體 _字幕01
- )
- for /f delims= %%f in ('dir /b /a-d *_字幕02*.%%e 2^>nul') do (
- call :safe_move %%f 繁體 _字幕02
- )
- )
- :: 第二輪處理:識別.sc/.tc等后綴
- for %%F in (*.ass *.srt *.ssa) do (
- if exist %%F (
- setlocal disabledelayedexpansion
- set filepath=%%F
- set filename=%%~nF
- set extension=%%~xF
- setlocal enabledelayedexpansion
- set subtype=
- set newname=
- :: 檢測簡體后綴
- if !filename:~-3!==.sc (
- set subtype=sc
- set newname=!filename:~0,-3!
- )
- if not defined subtype if !filename:~-4!==.chs (
- set subtype=sc
- set newname=!filename:~0,-4!
- )
- if not defined subtype if !filename:~-5!==.jpsc (
- set subtype=sc
- set newname=!filename:~0,-5!
- )
- :: 檢測繁體后綴
- if not defined subtype if !filename:~-3!==.tc (
- set subtype=tc
- set newname=!filename:~0,-3!
- )
- if not defined subtype if !filename:~-4!==.cht (
- set subtype=tc
- set newname=!filename:~0,-4!
- )
- if not defined subtype if !filename:~-5!==.jptc (
- set subtype=tc
- set newname=!filename:~0,-5!
- )
- :: 處理檢測到的后綴類型
- if defined subtype (
- if !subtype!==sc set targetdir=簡體
- if !subtype!==tc set targetdir=繁體
- set newpath=!targetdir!!newname!!extension!
- move !filepath! !newpath! >nul 2>&1
- if exist !newpath! (
- echo 已移動: !newname!!extension! → !targetdir!
- endlocal & endlocal & set /a success+=1
- ) else (
- echo 移動失敗: !filepath!
- endlocal & endlocal & set /a fail+=1
- )
- ) else (
- endlocal & endlocal
- )
- )
- )
- :: 顯示結果統計
- echo.
- echo 處理完成!
- echo 成功: %success% 個文件
- echo 失敗: %fail% 個文件
- echo 按任意鍵退出...
- pause >nul
- exit /b
- :: 安全移動函數(處理特殊字符)
- :safe_move
- setlocal disabledelayedexpansion
- set file=%~1
- set target=%~2
- set pattern=%~3
- for %%A in (%file%) do (
- set name=%%~nA
- set ext=%%~xA
- )
- setlocal enabledelayedexpansion
- set newname=!name:%pattern%=!
- set newpath=!target!!newname!!ext!
- move !file! !newpath! >nul 2>&1
- if exist !newpath! (
- echo 已移動: !newname!!ext! → !target!
- endlocal & endlocal & set /a success+=1
- ) else (
- echo 移動失敗: !file!
- endlocal & endlocal & set /a fail+=1
- )
- exit /b
文件名隨便測試新!$#%♥♡()【「〖❗:★☆🌟♥_+/_字幕02_chi.assnclick="copycode($('code1'));">復制代碼
- 移動失敗: 1^^建_字幕01_chi.txt.ass
- 處理完成!
- 成功: 0 個文件
- '�文件' is not recognized as an internal or external command,
- operable program or batch file.
- '��鍵退出...' is not recognized as an internal or external command,
- operable program or batch file.

