以下を.cmdファイル(または.batファイル)に入れ、重複ビデオファイルのスキャンと削除を開始するルート/ベースディレクトリで実行します。
スクリプトは、同じディレクトリ内の.mkvファイルと同じファイル名を持つファイルを削除します。ただし、.nfoファイルは削除されません。
さらに、スクリプトは同じ手順をすべてのサブディレクトリに再帰的に適用しています。
の使用法に注意してくださいsetlocal
。スクリプトは、遅延環境変数の展開を利用します。ただし、これには、変数のコンテンツの一部である可能性のある感嘆符を飲み込むという問題があります。この感嘆符の不要な削除を防ぐために、遅延環境変数の拡張は必要な場合にのみ有効になります。
@echo off
setlocal enableextensions disabledelayedexpansion
echo Processing directory: "%CD%"
rem The outer for-loop goes through all ".mkv" files in the current folder.
rem The inner for-loop goes through all files with the same base file name
rem as the ".mkv" file and deletes them if its file extension is
rem neither ".mkv" nor ".nfo".
for %%i in (*.mkv) do (
set BaseFileName=%%~ni
setlocal enabledelayedexpansion
for %%j in ("!BaseFileName!.*") do (
set FileExtension=%%~xj
if /i {!FileExtension!} neq {.mkv} if /i {!FileExtension!} neq {.nfo} (
setlocal disabledelayedexpansion
echo Deleting %%j
del /q /f "%%j"
endlocal
)
)
endlocal
)
rem This for-loop is responsible for the recursion into sub directories.
set BatchFileAbsolutePath=%~df0
for /d %%i in (*.*) do (
pushd "%%i"
call "%BatchFileAbsolutePath%"
popd
)