フォルダを削除するためのカスタム右クリックメニューオプションが機能しない

フォルダを削除するためのカスタム右クリックメニューオプションが機能しない

私は 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

まず、ファイル名にスペースが含まれるフォルダのディレクトリ引数のパスを引用符で囲む必要があります。引用符を追加するには、以下のシェルコマンドで引用符文字をエスケープします。ペスタジオ:

[HKEY_CLASSES_ROOT*\shell\pestudio\command]

@="\"C:\program files\pestudio\pestudio.exe\" \"%1\""

第二に、引数の標準プレースホルダ%1少なくとも1つの引数を必要とします。プレースホルダ %v はデフォルトの引数を指定するために使用されます何も指定されていない場合、作業ディレクトリ を指定すると、多少危険です。これにより、ファイルやフォルダが意図せず削除される可能性があります。コンテキスト メニューがクリックしたフォルダに適用されるように、%1 を使用することをお勧めします。

注意レジストリ内のバックスラッシュには細心の注意を払ってください。多すぎたり少なすぎたりすると、レジストリが破損する可能性があります (悲しい経験から学んだことです)。

答え2

解決策を見つけました。私にとってうまくいったのは次の方法です:

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

関連情報