Мне абсолютно положительно надоели случайные папки нежелательной почты (CyberPower, VirtualBox и т.д.), Которые были сброшены в папку "Мои документы" в Windows. Я использую Windows 7 для уточнения. Нет, это не "файл пользователя", это Мои документы, я также не собираюсь называть Xbox 3 неправильным номером. Теперь, когда мы пояснили, что я хотел бы найти способ создать небольшую пакетную программу, которая будет уничтожать неизвестные нежелательные папки, я вставлю ее в то место, где я активно разрешаю запускать программы при запуске: папка автозагрузки в папке для всех пользователей.

Если массивы (или это вообще) не могут быть выполнены с помощью пакета, что было бы хорошим языком, не зависящим от платформы, для решения этой проблемы?

1 ответ1

2

Во-первых, осторожность. Неполный белый список может привести к удалению важных файлов. Кроме того, эти «нежелательные папки» часто требуются для правильной работы программного обеспечения, которое их создало. Если вы все еще выбираете это решение, вот одна строка с разрывами строки для удобства чтения:

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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .