Пакетный файл, который удаляет папки из Моих Документов, кроме тех, которые в массиве
Мне абсолютно положительно надоели случайные папки со спамом (CyberPower, VirtualBox и т. Д.), Которые сбрасываются в папку "Мои документы" в Windows. Я использую Windows 7 для уточнения. Нет, это не "файл пользователя", это Мои документы, я также не собираюсь называть Xbox 3 неправильным номером. Теперь, когда мы пояснили, что я хотел бы найти способ создать небольшую пакетную программу, которая будет уничтожать неизвестные нежелательные папки, я вставлю ее в то место, где я активно разрешаю запускать программы при запуске: папка автозагрузки в папке для всех пользователей.
Если массивы (или это вообще) не могут быть выполнены с помощью пакета, что было бы хорошим языком, не зависящим от платформы, для решения этой проблемы?
1 ответ
Во-первых, осторожность. Неполный белый список может привести к удалению важных файлов. Кроме того, эти "нежелательные папки" часто требуются для правильной работы программного обеспечения, которое их создало. Если вы все еще выбираете это решение, вот одна строка с разрывами строки для удобства чтения:
pushd C:\Users\John\Documents &&
for /D %i in (*) do @(
echo %i| findstr /V /I /R /C:"^Important$" /C:"^Keep me$" > NUL &&
echo rmdir /S /Q %i
) & popd
В своем нынешнем виде это утверждение не делает ничего вредного. Второе эхо-сообщение отображает, а не выполняет команду 'rmdir' и включено в качестве меры предосторожности. Проверьте, будет ли скрипт работать так, как задумано, затем удалите второе вхождение 'echo'.
Краткое объяснение. pushd
временно меняет каталог на папку документов. for /D
перечисляет все каталоги там. Для каждого каталога findstr
соответствует его имени против белого списка. Выключатели /V /I /R
печатать только несоответствующие записи, сделать поиск нечувствительным к регистру и включить регулярные выражения. Каждый каталог, который должен быть сохранен, затем отображается как /C:"^dirname$"
, Каталоги не в белый список составят findstr
вернуть нулевой уровень ошибки, выполнив команду после двойного амперсанда, т.е. rmdir /S /Q %i
, удаляя этот каталог, пустой или нет, без запроса подтверждения.
Если запустить из командного файла, а не непосредственно из командной строки, заменить каждый %i
с %%i
,