Пакетный файл, который удаляет папки из Моих Документов, кроме тех, которые в массиве

920
John

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

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

0
VBS и PowerShell не будет иметь никаких проблем с тем, что это когда-либо сценарий. Пакетно вам понадобится много обходных путей, чтобы сделать это. Пара быстрых вещей, которые нужно добавить, это должно быть рекурсивным? Нужно ли менять список папок, которые нужно сохранить? 50-3 11 лет назад 1
Он просто должен работать и, желательно, иметь простой в обслуживании массив, чтобы другие люди могли настраивать, какие папки они хотят внести в белый список, писать что-то статичное и не простое в обновлении не стоит тех, кто хочет сделать то же самое после того, как мы Я закончил и забыл об этом. И да, под изменением я имею в виду, что мы редактируем файл и легко вносим белый список в папку. Под удалением я подразумеваю перемещение в мусорную корзину. VBS кажется более жизнеспособным, чем пакетный, хотя я не очень знаком с ним. John 11 лет назад 0
Вы можете использовать VBS, чтобы открыть и прочитать текстовый файл и построить массив, используя функцию split. Тогда это просто оператор if, основанный на выводе списка папок из расположения моих документов 50-3 11 лет назад 1
возможный дубликат [Как удалить файлы из папки, используя список имен файлов в Windows?] (http://superuser.com/questions/355584/how-to-delete-files-from-a-folder-using- а-список-оф-файловых имен-в-окна) Ƭᴇcʜιᴇ007 11 лет назад 0

1 ответ на вопрос

2
Marcks Thomas

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

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.