Benutzerdefinierte Rechtsklickmenüoption zum Löschen eines Ordners funktioniert nicht

Benutzerdefinierte Rechtsklickmenüoption zum Löschen eines Ordners funktioniert nicht

Ich arbeite mit Angular und es generiert riesige Projektordner, deren Löschung mit der normalen Methode zum Löschen von Ordnern ewig dauert. Wenn man sie jedoch mit dem folgenden Befehl in der Befehlszeile löscht, ist der Ordner in wenigen Sekunden weg:rmdir /s /q <folder path>

Also suchte ich im Internet nach einer Lösung und fand mehrere, die mir sagten, ich solle die Registrierung ändern. Das tat ich, aber wenn ich mit der rechten Maustaste auf einen Ordner klicke und ihn mit der benutzerdefinierten Menüoption („Ordner schnell löschen“) löschen möchte, wird er nicht gelöscht. Wenn ich außerdem mit der rechten Maustaste auf eine leere weiße Stelle in einem Ordner klicke, der Dateien und Unterordner enthält, und „Ordner schnell löschen“ wähle, werden alle Unterordner und einige Dateien gelöscht, die sich nicht in Unterordnern befinden (d. h. im aktuellen Stammordner). Seltsamerweise werden nicht nur alle Ordner auf dem Desktop gelöscht, wenn ich mit der rechten Maustaste auf eine leere Stelle auf dem Desktop klicke und „Ordner schnell löschen“ wähle, sondern auch einige der Verknüpfungen.

Was ist falsch an meiner .reg-Datei?

reg-Datei zum Hinzufügen von Kontextmenüelementen

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"

Antwort1

Zunächst müssen Sie den Pfad des Verzeichnisarguments für einen Ordner mit Leerzeichen im Dateinamen in Anführungszeichen setzen. Um diese hinzuzufügen, müssen Sie die Anführungszeichen maskieren, wie unten im Shell-Befehl für gezeigt.Abonnieren:

[HKEY_CLASSES_ROOT*\shell\pestudio\command]

@="\"C:\Programme\pestudio\pestudio.exe\" \"%1\""

Zweitens, dieStandardplatzhalter für das Argumentist %1und erfordert mindestens ein Argument. DieDer Platzhalter %v wird verwendet, um ein Standardargument bereitzustellen, das Arbeitsverzeichnis, wenn keines angegeben ist – etwas gefährlich. Das könnte das unbeabsichtigte Löschen von Dateien und Ordnern erklären. Es wäre besser, %1 zu verwenden, damit das Kontextmenü auf den Ordner angewendet wird, auf den Sie klicken.

AchtungSeien Sie mit Backslashes in der Registry äußerst vorsichtig – einer zu viel oder zu wenig kann die Registry beschädigen (aus trauriger Erfahrung gelernt).

Antwort2

Ich habe die Lösung gefunden. Folgendes hat bei mir funktioniert:

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

verwandte Informationen