現在、名前の内容に応じていくつかのファイルの名前を変更しようとしています。私には4つの異なる可能性があります:
- ファイル名に「raw.footage」が含まれています
- ファイル名に「resized.1080」が含まれています
- ファイル名に「resized.720」が含まれています
- ファイル名に「converted.avi」が含まれています
これらのファイルの名前に応じて、これらのファイルの名前を変更しようとしています。raw.footage の名前を raw に変更し、サイズを変更します。1080 から 1080 などにします。
可能であれば、可能な名前ごとに 4 つではなく、.bat スクリプト/ファイルを 1 つだけ使用したいと考えています。
これが私がこれまでに行ったことです:
FOR /R %completepath% %%G IN (*.mp4) DO call :process "%%~nG"
GOTO :EOF
:process
SET %name%=%~1
SET chkname=%name:*raw.footage=?%
IF "%chkname:~0,1%"=="?" (
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET old=raw.footage
SET new=raw
for /f "tokens=*" %%f in ('dir /b *.mp4') do (
SET newname=%%f
SET newname=!newname:%old%=%new%!
move "%%f" "!newname!"
)
) ELSE (
GOTO 1080p
)
:1080p
FOR /R %completepath% %%G IN (*.mp4) DO call :process "%%~nG"
GOTO :EOF
:process
SET %name%=%~1
SET chkname=%name:*resized.1080=?%
IF "%chkname:~0,1%"=="?" (
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET old=resized.1080
SET new=1080
for /f "tokens=*" %%f in ('dir /b *.mp4') do (
SET newname=%%f
SET newname=!newname:%old%=%new%!
move "%%f" "!newname!"
)
) ELSE (
GOTO 720
)
raw.footage の名前変更のみを含む最初のブロックを使用している間、それ自体は正常に動作しますが、2 番目のブロックを追加すると、コマンドラインがブロック間でジャンプするだけで、ファイルには何も起こりません。