#batch-file
#пакетный файл
Вопрос:
У меня есть папка с фильмами, которая содержит следующую структуру:
C:MoviesMovie Title 1
C:MoviesMovie Title 2
C:MoviesMovie Title 3 xyz
C:MoviesMovie Title 4 xyz
C:MoviesMovie Title 5
C:MoviesMovie Title 6 xyz
C:MoviesMovie Title 7.avi
C:MoviesMovie Title 8.mp4
Что я ищу, так это пакетный файл, который я могу запустить через планировщик задач, чтобы удалить все папки (и их содержимое), в которых нет слова xyz
, а также другие типы файлов в папке Movies, например:
C:MoviesMovie Title 7.avi
C:MoviesMovie Title 8.mp4
Таким образом, в результате выполнения пакетного файла у меня было бы только:
C:MoviesMovie Title 3 xyz
C:MoviesMovie Title 4 xyz
C:MoviesMovie Title 6 xyz
Что у меня пока есть, так это этот код:
set folder="C:Movies"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir *.* /q || del *.* /q)
Но это удаление только файлов в папке movies, не удаляет папки, в которых нет определенного слова, как я упоминал выше.
Комментарии:
1. Что вы уже пробовали?
2. есть несколько способов, но вам нужно хотя бы показать, что вы пробовали, прежде чем я действительно смогу опубликовать для вас ответ.
Ответ №1:
Вы можете использовать много методов .. во-первых, вы могли бы использовать findstr
и запускать оба del
и rmdir
для файлов, не проверяя, что это такое, а просто перенаправляя на nul
.
@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 /?
Комментарии:
1. Если это сработало, вы должны бросить кость Герхарду, приняв это как принятый ответ 😉