Пакетный файл для удаления папок, у которых нет определенного слова - PullRequest
0 голосов
/ 27 марта 2019

У меня есть папка Movie, которая имеет следующую структуру:

C:\Movies\Movie Title 1
C:\Movies\Movie Title 2
C:\Movies\Movie Title 3 xyz
C:\Movies\Movie Title 4 xyz
C:\Movies\Movie Title 5
C:\Movies\Movie Title 6 xyz
C:\Movies\Movie Title 7.avi
C:\Movies\Movie Title 8.mp4

То, что я ищу, это командный файл, который я могу запустить через планировщик задач, чтобы удалить все папки (и содержимое), которые не имеют слова xyz, и, кроме того, другие типы файлов в папке «Фильмы», например:

C:\Movies\Movie Title 7.avi
C:\Movies\Movie Title 8.mp4

Таким образом, в результате выполнения командного файла у меня будет только:

C:\Movies\Movie Title 3 xyz
C:\Movies\Movie Title 4 xyz
C:\Movies\Movie Title 6 xyz

Пока у меня есть этот код:

set folder="C:\Movies\"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir *.* /q || del *.* /q)

Но это, только удаляет файлы в папке фильмы, не удаляет папки, у которых нет определенного слова, как я упоминал выше.

1 Ответ

1 голос
/ 27 марта 2019

Вы можете использовать много методов. Например, вы можете использовать findstr и запускать файлы del и rmdir, не проверяя их и просто перенаправляя на nul. * 1005. *

@echo off
for /f "delims=" %%i in ('dir /b C:\Movies\ ^| findstr /vi "xyz"') do (
  del /Q "%%i">nul
  rmdir /Q/S "%%i">nul
)

Не стесняйтесь читать вышеупомянутые команды от cmd.exe

  • findstr /?
  • for /?
  • if /?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...