這個腳本(除了尋找重複文件)重命名的文件不包括(在單個文件夾)的特殊字符。當文件名有「
和」
這樣的字符時,我仍然遇到問題。我試圖在delayedexpansion
之內添加內容,並且在外部沒有成功。批:轉義特殊字符,如「和」可變
@echo off
echo "%~1" | find /i "system volume information" >nul && exit /b
echo "%~1" | find /i "s-1-5-21-3" >nul && exit /b
echo "%~1" | find /i "recycle" >nul && exit /b
cd /d %1 2>nul
if /i not "%~1"=="%cd%" echo cannot access %~n1 && exit /b
for %%v in (*) do set "original=%%~nxv" & call :validate
for /f "delims=" %%v in ('dir /b /a-d') do set "compare=%cd%\%%v" & call :detection
exit /b
:validate
:: add handling of 「 and 」
set "newtitle=%original:!=%"
set "newtitle=%newtitle:」=%"
set "newtitle=%newtitle:&=and%"
setlocal enabledelayedexpansion
set "newtitle=!newtitle:%%= percent!"
setlocal disabledelayedexpansion
if not "%original%"=="%newtitle%" ren "%original%" "%newtitle%" && echo validated %newtitle%
goto next
:detection
:: this extrapolates %string% from beginning of filename
call d:\other\scripts\lootname.cmd "%compare%" data
set count=0
for %%v in ("%string%*") do set /a "count+=1"
for %%v in ("%string%*") do if not "%count%"=="1" echo "%%v"
:next
文件名不能有像**「**和**」 ** – Compo
以及YouTube下載併成功的文件名保存到我的NTFS驅動器字符。現在我嘗試了我也可以。 – bricktop
@Compo你爲什麼這麼認爲?我只是把你的確切句子放到一個文件名中,但批處理並不是處理這些字符的理想環境,我建議使用PowerShell – LotPings