Windows: So fügen Sie dem Rechtsklick-Menü eine Batch-Skript-Aktion hinzu

18

Ich habe ein paar Programme, die temporäre Dateien oder Sicherungsdateien oder ähnliche Dateien erstellen, die nicht wichtig sind. Beispielsweise erstellt GVim für Windows standardmäßig eine Sicherungsdatei in filename.txt~.

Manchmal muss ich ein Verzeichnis aufräumen und alle diese Dateien entfernen. Ich habe dafür eine einfache .bat-Datei erstellt. Es ist jedoch umständlich, CMD zu starten, zum Ordner zu navigieren und das Skript auszuführen. Zumal es sich um ein Skript handelt, das ich gerne öfter in verschiedenen Ordnern ausführen würde. Und ich möchte das Skript nicht in mehrere Ordner kopieren, da dies ein Wartungs-Albtraum wäre.

Daher dachte ich, dass die beste Lösung darin besteht, ein Rechtsklick-Menüelement hinzuzufügen, mit dem ich das Skript ausführen kann. Damit ich mit der rechten Maustaste auf einen Ordner im Explorer und dann auf Bereinigen klicken und mein Skript in diesem Ordner ausführen kann.

Meine Frage lautet also: Wie füge ich eine Rechtsklick-Menüaktion hinzu, die ein benutzerdefiniertes Stapelskript ausführt?

ervingsb
quelle

Antworten:

18

Ich habe Windows XP SP3 mit diesem .reg-Schlüssel ausprobiert. Ich habe momentan kein Windows 7, um es richtig zu testen, aber es sollte fast dasselbe sein.

  1. Öffne den Editor und füge den Code von unten ein.
  2. Bearbeiten Sie nach Ihren Wünschen.
  3. Speichern Sie als MyScript1.reg
  4. Doppelklicken Sie, um in die Registrierung zu importieren.
  5. Test per Rechtsklick auf ein beliebiges Verzeichnis im Explorer
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ MyScript1]
@ = "MyScript1 ausführen"

[HKEY_CLASSES_ROOT \ Directory \ shell \ MyScript1 \ command]
@ = "" C: \\ MyScriptsDirectory \\ MyScript1Directory \\ MyScript1.bat \ "\"% 1 \ ""
Robert Schmidt
quelle
4
Ich habe deine Antwort ein wenig überarbeitet. "Windows Registry Editor Version 5.00" ist ein obligatorischer Header für .reg-Dateien. Andernfalls weigert sich Windows, den Inhalt in die Registrierung einzufügen.
Extremko
+1 für diesen Hinweis. Das habe ich beim c / p-Code total vergessen.
Robert Schmidt
1
Ich habe es versucht. Jetzt kann ich direkt mit der rechten Maustaste auf einen Ordner klicken, aber es funktioniert nicht, wenn ich mit der rechten Maustaste klicke in einen Ordner . Welches ist eigentlich was ich will. Wie geht das?
Ervingsb
1
Das ist eine andere Frage als die Frage "Damit ich mit der rechten Maustaste auf einen Ordner im Explorer klicken und auf Bereinigen klicken und dann mein Skript für diesen Ordner ausführen kann".
Robert Schmidt
Ja, deshalb habe ich es klargestellt. Entschuldigen Sie die Ungenauigkeit. Ich betrachte es tatsächlich als einen Rechtsklick auf den Ordner. Es ist einfach nicht das Ordnersymbol, sondern innerhalb des Ordners.
Ervingsb
18

Tatsächlich ist die aktuelle Antwort nicht veraltet. Ich habe genau das Gleiche unter Windows 10 versucht und konnte Run Batch scriptdas Kontextmenü aller Ordner in Windows erweitern.

Dies ist der Inhalt meines Batch-Skripts (funktioniert nicht mit UNC-Pfaden ):

@ECHO AUS
ECHO% ~ n0 wurde mit den folgenden Argumenten aufgerufen:
SET args =% *
WENN NICHT DEFINIERT, werden die Argumente GOTO END
ECHO% *
:ENDE
PAUSE

Die von mir vorgenommenen Registrierungsänderungen können mit dieser REG-Datei repliziert werden:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Batch-Skript ausführen]
@ = "& Stapelskript ausführen"

[HKEY_CLASSES_ROOT \ Verzeichnis \ Shell \ Stapelskript ausführen \ Befehl]
@ = "" H: \\ BATCH_FILE_PATH \\ context-batch.bat \ "\"% 1 \ "

Dies fügt nur einen Kontextmenüpunkt für alle Verzeichnisse / Ordner in Windows hinzu. Wenn Sie es stattdessen für jede einzelne Datei anzeigen möchten, können Sie dies verwenden:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ * \ shell \ Skript ausführen]
@ = "Ausführen & Skript"

[HKEY_CLASSES_ROOT \ * \ shell \ Skript ausführen \ Befehl]
@ = "" H: \\ BATCH_FILE_PATH \\ context-batch.bat \ "\"% 1 \ "

Alternativ können Sie Ihr Stapelskript zur Send ToArtikelliste hinzufügen, indem Sie eine Verknüpfung zu Ihrem Stapelskript erstellen und unter %APPDATA%\Microsoft\Windows\SendTo(oder shell:sendtoin die Adressleiste eingeben ) platzieren.

Wenn Ihr Skript im Kontextmenü angezeigt werden soll, wenn Sie mit der rechten Maustaste auf den leeren Bereich innerhalb eines Verzeichnisses klicken (Verzeichnishintergrund?), Können Sie die folgende REG-Datei verwenden:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Stapelskript ausführen]
@ = "& Stapelskript ausführen"
"Icon" = "% SystemRoot% \\ System32 \\ shell32.dll, 71"

[HKEY_CLASSES_ROOT \ Verzeichnis \ Hintergrund \ Shell \ Batch-Skript ausführen \ Befehl]
@ = "H: \\ BATCH_FILE_PATH \\ context-batch.bat \"% V \ ""

Du brauchst die "Icon"="%SystemRoot%\\System32\\shell32.dll,71"Leitung nicht. Es fügt Ihrem Kontextmenü einfach ein Symbol hinzu, das so aussieht:

Kontextmenüsymbolfenster

Vinayak
quelle
Vielen Dank! Übrigens, wissen Sie, wie Sie dieses Kontextmenü anzeigen, wenn ich mit der rechten Maustaste auf den leeren Bereich des aktuellen Ordners klicke (nicht nur, wenn ich auf den Ordner selbst klicke)?
Tom Brito
@ TomBrito Bitte sehen Sie meine neueste Bearbeitung.
Vinayak
@ Tom Brito: Das Ändern des Kontextmenüs für leeren Raum scheint hier beantwortet zu werden: stackoverflow.com/questions/4902041/…
kreemoweet
@kreemoweet Danke, dass du das verlinkt hast! Dies erfuhr ich jedoch, indem ich den Kontextmenü-Editor analysierte .
Vinayak
@kreemoweet Ich habe die Zeichenfolge Pfad für Directory\Backgroundenthalten %Vwie das aktuelle Verzeichnis an das Skript übergeben würde. Ich bin mir jedoch nicht sicher, was es bedeutet. %Wscheint genauso gut zu funktionieren.
Vinayak
6

Ich würde Default Programs Editor für diese Aufgabe empfehlen . Es ist benutzerfreundlicher und sicherer als die Registrierung direkt zu bearbeiten.

Wählen Sie Kontextmenü Bildbeschreibung hier eingeben

Wählen Sie die Erweiterung aus, die Sie ändern möchten. Bildbeschreibung hier eingeben

Wählen Sie Hinzufügen ... Bildbeschreibung hier eingeben

Geben Sie Ihrem Befehl einen Titel, navigieren Sie zur Stapeldatei und wählen Sie optional ein Symbol aus, das Ihren Befehl darstellt. Bildbeschreibung hier eingeben

Speichern Sie das Kontextmenü in der Registrierung und Sie können loslegen.

Xtremity
quelle
Ich möchte den Stapel für Ordner ausführen, nicht für einen Dateityp. Sieht aus wie es nicht hilft ...
Tom Brito
Das hat mir geholfen, danke fürs Teilen.
Daniel Kaplan
Nettes Programm. Vielen Dank.
Laurie Stearn
0

Alternative Lösung, die ich unter Windows 10 verwende, ist das Hinzufügen eines Skripts zu einem der Ordner in der Pfadvariablen und dann, wenn Sie sich im Explorer befinden, die folgende Reihenfolge:

  • Strg + L - um in die Suchleiste zu schreiben

  • Geben Sie cmd ein und drücken Sie die Eingabetaste, um cmd im aktuellen Verzeichnis zu starten

  • Führen Sie Ihr Skript aus, indem Sie den Dateinamen eingeben

Jabone
quelle
0

@ Vinayak,

Wenn Sie die Option "Senden an" verwenden, müssen Sie die Zeile wahrscheinlich cd /d %1an den Anfang des Stapelbefehls setzen, damit sie unter dem Zielpfad ausgeführt wird.

Meine aktuelle Batch-Datei sieht folgendermaßen aus:

@echo off
cd /d %1    
del *.txt
pause

Vielen Dank für die Hilfe, ich bin zum richtigen Zeitpunkt über Google darauf gestoßen :)

Chris
quelle
Dies ist wirklich ein Kommentar und keine Antwort auf die ursprüngliche Frage. Wenn Sie einen Autor kritisieren oder um Klärung bitten möchten, hinterlassen Sie einen Kommentar unter seinem Beitrag. Sie können jederzeit Ihre eigenen Beiträge kommentieren. Wenn Sie über eine ausreichende Reputation verfügen, können Sie jeden Beitrag kommentieren . Bitte lesen Sie Warum brauche ich 50 Ruf, um einen Kommentar abzugeben? Was kann ich stattdessen tun?
DavidPostill
@DavidPostill Nun, er hatte keinen eigenen Beitrag in diesem Thread, zu dem er einen Kommentar abgeben konnte, bevor er seine Antwort veröffentlichte. nichts vermutlich.
Barlop
@barlop Antworten sind bekanntlich kein Ersatz für Kommentare. Eine Alternative besteht darin, eine Bearbeitung für die andere Antwort vorzuschlagen ... aber das würde wahrscheinlich abgelehnt.
DavidPostill
@DavidPostill Mein Punkt ist nur, dass er dann keine Option hat. und Sie sind sich darüber in Ihrem ursprünglichen Kommentar nicht wirklich im Klaren. Tatsächlich deutet Ihr ursprünglicher Kommentar darauf hin, dass er einige Optionen hat, dies jedoch nicht.
Barlop
@barlop Ah. IN ORDNUNG. Ich werde über eine bessere Formulierung nachdenken ...
DavidPostill