1つのフォルダに何千ものファイルがあり、それらのほとんどには次のような名前のプレフィックスが付いています:NNNN_*。jpg
たとえば、3453_dfgdhfdgh.jpg、1000_dfgdhfdgh.jpg、5463_dfgdhfdgh.jpgなどです。
CMDを使用して、そのようなプレフィックスが存在するファイルのプレフィックスを削除して、すべてのファイルの名前を変更するにはどうすればよいですか?
1つのフォルダに何千ものファイルがあり、それらのほとんどには次のような名前のプレフィックスが付いています:NNNN_*。jpg
たとえば、3453_dfgdhfdgh.jpg、1000_dfgdhfdgh.jpg、5463_dfgdhfdgh.jpgなどです。
CMDを使用して、そのようなプレフィックスが存在するファイルのプレフィックスを削除して、すべてのファイルの名前を変更するにはどうすればよいですか?
常に前に4桁の数字がある場合、それはかなり簡単です。
setlocal enabledelayedexpansion
for %%F in (*) do (
set "FN=%%F"
set "FN=!FN:~5!"
ren "%%F" "!FN!"
)
goto :eof
しかし、それが本当に本当かどうかを最初に確認する必要があるかもしれません。その場合、2つのヘルパー関数が必要です(上の部分の下に追加してください)。
:IsDigit
set Digit=
if "%~1" GEQ "0" if "%~1" LEQ "9" set Digit=1
goto :eof
:IsNumber
setlocal
set "File=%~1"
set Number=
call :IsDigit "%File:~0,1%"
set Digit1=%Digit%
call :IsDigit "%File:~1,1%"
set Digit2=%Digit%
call :IsDigit "%File:~2,1%"
set Digit3=%Digit%
call :IsDigit "%File:~3,1%"
set Digit4=%Digit%
if "%Digit1%%Digit2%%Digit3%%Digit4%"=="1111" set Number=1
endlocal & set Number=%Number%
goto :eof
次に、次のように適応します。
setlocal enabledelayedexpansion
for %%F in (*) do (
set "FN=%%F"
call :IsNumber "!FN!"
if defined Number if "!FN:~4,1!"=="_" (
set "FN=!FN:~5!"
ren "%%F" "!FN!"
)
)
goto :eof