Как удалить все файлы с определенным расширением с помощью cmd batch, кроме двух определенных слов? Windows - PullRequest
0 голосов
/ 10 сентября 2018

Я хочу удалить пакетным образом для Windows все файлы с расширением *.jpg в папке (test) и ее подпапке, кроме двух файлов, например: abc.jpg и xyz.jpg, которые встречаются несколько раз в разных папках. .

Я пытался с

h:

cd test

for /R %%f in (*.jpg) do (if not "%%~xf"=="abc.jpg" if not "%%~xf"=="'xyz.jpg" del "%%~f")

но я потерпел неудачу.

Кто-нибудь может мне помочь? Спасибо

1 Ответ

0 голосов
/ 10 сентября 2018

Вы можете попробовать цикл FOR и проверить, является ли имя файла тем, которое не должно быть удалено. Если вы уверены, что правильные файлы будут удалены, удалите echo из команды DEL.

FOR /F "delims=" %%f IN ('DIR /S /B "C:\src\t\*.jpg"') DO (
    IF NOT "%%~nf" == "abc" IF NOT "%%~nf" == "xyz" (
        echo DEL "%%~f"
    )
)

Это также можно сделать в скрипте .bat, используя Powershell. Если вы уверены, что правильные файлы будут удалены, удалите -WhatIf из командлета Remove-Item.

powershell -NoProfile -Command ^
    "Get-ChildItem -Recurse -Filter '*.jpg' -exclude 'abc.*','xyz.*' |" ^
        "ForEach-Object { Remove-Item -Path $_ -WhatIf }"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...