Я работаю с Angular, и он создает огромные папки проектов, удаление которых обычным способом занимает целую вечность. Но если удалить их с помощью следующей команды в командной строке, папка исчезнет за несколько секунд:rmdir /s /q <folder path>
Итак, я поискал в интернете решение и нашел несколько, которые говорят мне, что нужно изменить реестр. Я сделал это, но когда я нажимаю правой кнопкой мыши на папку и выбираю удалить ее с помощью пользовательского меню ("Быстрое удаление папки"), она не удаляется. Кроме того, если я нажимаю правой кнопкой мыши на пустое место в папке, содержащей файлы и дочерние папки, и выбираю "Быстрое удаление папки", она удаляет все дочерние папки и некоторые файлы, не находящиеся в дочерних папках (т. е. в текущей корневой папке). Как ни странно, если просто щелкнуть правой кнопкой мыши на пустое место на рабочем столе и выбрать "Быстрое удаление папки", она удаляет не только все папки на рабочем столе, но и некоторые ярлыки вместе с ними.
Что не так с моим .reg-файлом?
reg-файл для добавления пунктов контекстного меню
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\Delete_Folder]
@="Folder quick delete"
"Extended"=-
[HKEY_CLASSES_ROOT\Directory\shell\Delete_Folder\command]
@="C:\\windows\\system32\\cmd.exe /c rmdir /s /q %V"
[HKEY_CLASSES_ROOT\Directory\Background\shell\Delete_Folder]
@="Folder quick delete"
"Extended"=-
[HKEY_CLASSES_ROOT\Directory\Background\shell\Delete_Folder\command]
@="C:\\windows\\system32\\cmd.exe /c rmdir /s /q %V"
[HKEY_CLASSES_ROOT\Drive\shell\Delete_Folder]
@="Folder quick delete"
"Extended"=-
[HKEY_CLASSES_ROOT\Drive\shell\Delete_Folder\command]
@="C:\\windows\\system32\\cmd.exe /c rmdir /s /q %V"
[HKEY_CLASSES_ROOT\LibraryFolder\background\shell\Delete_Folder]
@="Folder quick delete"
"Extended"=-
[HKEY_CLASSES_ROOT\LibraryFolder\background\shell\Delete_Folder\command]
@="C:\\windows\\system32\\cmd.exe /c rmdir /s /q %V"
решение1
Во-первых, вам нужно заключить в кавычки путь аргумента каталога для папки с пробелами в имени файла. Чтобы добавить их, экранируйте символы кавычек, как показано ниже в команде оболочки дляpestudio:
[HKEY_CLASSES_ROOT*\shell\pestudio\command]
@="\"C:\program files\pestudio\pestudio.exe\" \"%1\""
Во-вторых,стандартный заполнитель для аргументаесть %1
, требующий по крайней мере одного аргумента.Заполнитель %v используется для предоставления аргумента по умолчанию, рабочий каталог, когда ничего не указано — довольно опасно. Это может объяснить непреднамеренное удаление файлов и папок. Лучше использовать %1, чтобы контекстное меню применялось к папке, на которую вы нажимаете.
Примечание.Будьте предельно осторожны с обратными косыми чертами в реестре — слишком много или слишком мало обратных косых черт могут повредить реестр (извлечено из печального опыта).
решение2
Я нашел решение. Мне помогло следующее:
@="PowerShell -Command \"Remove-Item -LiteralPath '%1' -Force -Recurse\""