A opção de menu personalizada do botão direito para excluir uma pasta não funciona

A opção de menu personalizada do botão direito para excluir uma pasta não funciona

Eu trabalho com Angular e ele gera pastas de projeto que são enormes e demoram uma eternidade para serem excluídas com o método normal de exclusão de pasta, mas se excluir com o seguinte comando na linha de comando, a pasta desaparece em alguns segundos:rmdir /s /q <folder path>

Então, procurei uma solução na internet e encontrei várias que me dizem para modificar o registro. Sim, mas quando clico com o botão direito em uma pasta e opto por excluí-la com a opção de menu personalizado ("Exclusão rápida de pasta"), ela não a exclui. Além disso, se eu clicar com o botão direito em um espaço em branco em uma pasta que contém arquivos e pastas filho e escolher "Exclusão rápida de pasta", ele excluirá todas as pastas filho e alguns arquivos que não estão nas pastas filho (ou seja, na pasta raiz atual). Estranhamente, se você clicar com o botão direito em um espaço vazio da área de trabalho e escolher "Exclusão rápida de pasta", isso não apenas excluirá todas as pastas da área de trabalho, mas também alguns dos atalhos que acompanham ela.

O que há de errado com meu arquivo .reg?

reg arquivo para adicionar itens do menu de contexto

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"

Responder1

Primeiro, você precisa colocar aspas no caminho do argumento do diretório para uma pasta com espaços no nome do arquivo. Para adicioná-los, escape dos caracteres de aspas conforme mostrado abaixo no comando shell paraestúdio:

[HKEY_CLASSES_ROOT*\shell\pestudio\command]

@="\"C:\arquivos de programas\pestudio\pestudio.exe\" \"%1\""

Em segundo lugar, oespaço reservado padrão para o argumentoé %1, exigindo pelo menos um argumento. Oo espaço reservado %v é usado para fornecer um argumento padrão, o diretório de trabalho, quando nenhum é fornecido — um tanto perigoso. Isso pode explicar a exclusão não intencional de arquivos e pastas. Seria melhor usar% 1 para que o menu de contexto se aplique à pasta na qual você clica.

ObservaçãoSeja extremamente cuidadoso com barras invertidas no Registro - uma barra a mais ou a menos pode corromper o Registro (aprendido com uma triste experiência).

Responder2

Eu encontrei a solução. O que funcionou para mim é o seguinte:

@="PowerShell -Command \"Remove-Item -LiteralPath '%1' -Force -Recurse\""

informação relacionada