Чтобы упростить понимание, я подумал, что опубликую метод, который разбивает это на отдельные процедуры для вас.
Идея состоит в том, чтобы перечислить имена файлов, соответствующие расширениям, в отдельных файлах хранения.,Затем используйте FindStr
, чтобы определить, какие списки содержат уникальные или повторяющиеся имена перед удалением файлов хранения.
@Echo Off
Set "sd=C:\SomePath\To\YourFiles"
Set "e1=.jpg"
Set "e2=.wav"
Rem change working directory to source directory
CD /D "%sd%" 2>Nul || Exit /B
Rem Write files names matching extension spec to .tmp files
For %%A in (%e1% %e2%) Do (For /F "Delims=" %%B In (
'Dir /B/A-D-S-L "*%%A" 2^Nul') Do Echo "%%~nB")>"x%%A.tmp"
Rem %e1% files only, ["%%~A%e1%"]
For /F "Delims=" %%A In ('FindStr /XLVIG:"x%e2%.tmp" "x%e1%.tmp"') Do (
Echo %%~A%e1%
)
Echo(
Rem %e2% files only, ["%%~A%e2%"]
For /F "Delims=" %%A In ('FindStr /XLVIG:"x%e1%.tmp" "x%e2%.tmp"') Do (
Echo %%~A%e2%
)
Echo(
Rem Both %e1% and %e2% files, ["%%~A%e1%", "%%~A%e2%"]
For /F "Delims=" %%A In ('FindStr /XLIG:"x%e2%.tmp" "x%e1%.tmp"') Do (
Echo %%~A%e1%, %%~A%e2%
)
Echo(
Rem Delete the tmp files
Del "x%e1%.tmp" "x%e2%.tmp" >Nul 2>&1
Rem pause to show screen output
Pause
Просто убедитесь, что местоположение в строке 2
изменено в соответствии с исходным каталогом, чтобы проверить его.
Если вы довольны, что он правильно определил файлы, вы можете заменить Echo
строки в 15
, 21
и 27
своими собственными командами, (у меня естьоставил имена файлов в скобках в виде Rem
в качестве напоминания) .При желании вы можете по желанию удалить строки 17
, 23
, 29
, 34
и 35
, содержащие Rem
arks и любые пустые строки.