52. Datum: 18.04.2010: 1% - Arbeiten mit der Variabel in der cmd, registry und Verknüpfungen

Viele User kommen in die Verlegenheit die 1 % Variable in einem Command-Befehl in der Registry oder in der cmd zu verwenden.
Dieses ist wieder eine Impulsabhandlung lassen Sie ihre Fantasie spielen. Der Sternenhimmelstuermer wünscht Ihnen viel Spaß beim Ausprobieren mit 1% !

Bei der Suche im Internet fand der Sternenhimmelstuermer erstmal nur diese englischsprachige Seite, die sich mit dem Thema beschäftigt und bei Google zu Recht Top 1 ist. Die Sternenhimmelstuermerhomepage gibt im Gegensatz zu anderen Seiten gerne Hyperlinks zu guten Seiten. Die Umsetzung und Erklärung finden Sie dann teilweise hier, dass nennt man Surfen und viele Homepages und Tippseiten haben dieses Prinzip leider nicht verstanden...

%1 ist im Prinzip nichts weiter als eine zuvor festgelegte Variabel, die einen vordefinierten Pfad oder Datei beinhaltet.

Eine Möglichkeit wäre es, einen beliebigen  Kommandozeilenbefehl im  Kontextmenüeintrag (Beispiel: HKEY_CLASSES_ROOT\txtfile\shell)

einzutragen und eine Datei mit einer beliebigen Dateiendung (Beispiel: txt) zum Mittelpunkt der Bearbeitung zu machen.

Dazu tragen Sie zur Übung das Ganze ruhig mal in den Registrierungseditor ein:

1. start - regedit ins Suchfeld eingeben - mit rechter Maustaste "Als Administrator" ausführen.
2. Durchhangeln auf der linken Seite der Ordnerhierarchie des Registrierungseditors im Pfad:  HKEY_CLASSES_ROOT\txtfile\shell
 3. Bei Bei SHELL legen Sie einen neuen Schlüssel an (rechte Maustaste: in den Eigenschaften neu -Schlüssel) Vergeben Sie einen beliebigen Namen wie probe.
4. Erzeugen Sie hier einen weiteren Unterschlüssel mit dem Namen Command (rechte Maustaste auf probe - Eigenschaften - neu - Schlüssel)
Command ist dabei die Zeile, die Sie für die Eingabe eines Befehles der Kommandozeile benötigen.
5. Doppelklicken Sie auf der rechten Seite von Command den Wert Standart und geben Sie cmd /k dir /Q Zeit /c "%1" ein.
6. Der Eintrag wird sofort aktiv. Gehen Sie nun auf ein beliebiges Textdokument und klicken Sie es mit der rechten Maustaste an

cmd /k bedeutet: Die CMD öffnet sich und bleibt nach Ausführung geöffnet. Viele User fragen im Internet, wie Sie die Ausgabe der cmd in Batches erhalten können. Der Parameter /k ist in der CMD-Hilfe (Cmd /?) eindeutig als Gegenteil zum Parameter /C (der schließt sofort das CMD-Fenster) definiert. Das trotzdem jede Menge utopische Lösungen im Internet für das Offenhalten oder Schließen des Fensters der Eingabeaufforderung (auch cmd oder Kommandozeile genannt) kursieren, ist ein Armutszeugnis...

dir /Q ist die Abfrage nach dem Besitzer der Datei, auch dieses ist in der Windowshilfe (dir /? in Eingabeaufforderung eingeben) hinreichend dokumentiert.
Zeit /c ist das Erstelldatum der Datei. Groß oder Kleinschreibung spiel eher  eine untergeordnete Rolle...

Es wird also über diesen Befehl der Besitzer der Datei und  das Erstelldatum der Datei ausgegeben.
Am Ende dieses Experimentes sollten Sie einfach den Schlüssel Probe in der Registry löschen, der sprichwörtlich nur eine Probe war. Dazu gehen Sie im Registrierungseditor auf den Schlüssel Probe, klicken ihn mit der rechten Maustaste an, wählen löschen, bestätigen die Rückfrage, ob der Schlüssel und alle Unterschlüssel gelöscht werden sollen mit ja (der Unterschlüssel Command soll ja auch entfernt werden!) und fertig

-----

Sie können nun selbst mit verschiedenen Dateiendungen, Befehlen und Parametern experimentieren.
Um die nötigen Schlüssel im Registrierungseditor für Dateiendungen zu finden, sollten Sie mit dem Freewaretool der PC-Welt  pcwShellExtension1.1  risikolos die Grundlagen kennenlernen:
Hier können Sie die Verwendung der 1% -Variable risikolos nachvollziehen und mit den erlangten Kenntnissen leicht eine Batchdatei oder einen cmd Befehl erstellen, den Sie individuell gestalten können - das schlimmste, was passieren kann, ist, dass der Kontextmenüeintrag nicht funktioniert.

Laden Sie sich dazu pcwShellExtension1.1 herunter (zipkomprimierter Ordner mit 78 kb - das ist megaklein).  Danach entpacken Sie das Tool und starten die  pcwShellExtension.exe mit Administrationsrechten (rechte Maustaste und "als Administartor ausführen).

Anmerkung: Das Tool ist eine Standalloneanwendung, die keine Spuren in der Registry hinterlässt, also nicht installiert oder deinstalliert werden muss!

Danach gehen Sie in die Registerkarte Kontextmenü und Wählen Dateierweiterung aus. Nun geben Sie z. B. txt ein und Bestätigen mit der Eingabetaste.

Nun werden Ihnen alle Programme angezeigt, die einen Kontextmenüeintrag im Schlüssel: HKEY_CLASSES_ROOT\txtfile haben. Es sollte u. a. der Schlüssel:  C:\Windows\system32\NOTEPAD.EXE %1 dort stehen (im Unterschlüssel open - Sie können das im Registrierungseditor nachvollziehen ).

Sie haben nun gelernt, wie die %1-Vaiabel funktioniert. Im Schlüssel open einer beliebigen Dateiendung wie mp3, html usw. finden Sie weitere Einträge. Die %1 steht für die Datei, die im o . a. Schlüssel durch ein Programm geöffnet wird. Nach diesem Schema könnten Sie z. B. jetzt einen eigenen Eintrag im Kontextmenü des Textdokumentes  kreieren, der z. B. alle Textdokumente mit dem Internetexplorer öffnet. Das ist nicht sinnvoll, aber hier der Weg zur Probe. Hinterher kann der Eintrag schließlich risikolos entfernt werden:

1. Geben Sie dazu html in die Eingabezeile der PC-Welt  pcwShellExtension1.1

2. Sie sehen nun den Eintrag "C:\Program Files\Internet Explorer\IEXPLORE.EXE" %1. Diese Zeile ist zur Standartöffnung des Internetexplorers ohne Rückfrage.

Sie könnten die Öffnung mit der Dateiendung html natürlich auf regulären Weg über die rechte Maustaste einstellen (auf eine HTML-Seite, dort in den Eigenschaften öffnen mit auswählen und dann ein empfohlenes Programm oder anderes Programm auswählen..).Sie sollen in dieser Übung jedoch einen neuen Eintrag ins Kontextmenü als Öffnungsoption kreieren - das geht leider so nich über den regulären Wegt...

3. Jetzt geben Sie txt in die obere Anzeigenzeile neben der Dateierweiterung ein.
Dann klicken Sie Hinzufügen an und fügen in die Spalte Neuer Kontextmenüeintrag einen beliebigen Eintrag ein, z. B. Alternative. In Befehlszeile geben Sie die o. a. Befehlszeile "C:\Program Files\Internet Explorer\IEXPLORE.EXE" %1 ein. Nach dem Betätigen der Hinzufügentaste ist der Eintrag im Kontextmenü sofort aktiv. Im Tool wird auch der Ort des Eintrages angezeigt: HKEY_CLASSES_ROOT\txtfile\shell.


4. Entfernen können Sie den Eintrag mit dem Tool nach markieren des neuen Eintrags und Betätigung der Löschtaste

5. Schauen Sie sich mehrere Dateiendungen an und erlernen die Syntax der %1-Variable. Überprüfen Sie die Einträge im Registrierungseditor.

------

Der Sternenhimmelstuermer beschrieb mal in einer Abhandlung über Thunderbird, wie man über eine Batch im Ordner sendto automatisch Dateien zu Anhängen macht, ein schönes Beispiel für die sinnvolle Verwendung von %1:

 Thunderbird in den Ordner Senden an (sendto) mit Batch einbinden

Der Ordner sent to liegt im Pfad: %AppData%\Microsoft\Windows\SendTo ( \das Roaming\ nach Appdata entfällt bei der Systemvaiablen, weil %AppData% eigentlich ... \AppData\Roaming ist). Einfacher ist natürlich die Eingabe Shell:SendTo ins Suchfeld des Startmenüs - Geschmackssache und für eine Batch nicht zu verwenden.

Verknüpfungen in diesem Ordner erscheinen bei allen Dateien im Kontextmenü (rechte Maustaste) und werden an das entsprechende Programm gesendet - theoretisch. Hier dürfte der schwarze Peter wohl bei Mozilla liegen. Denn eine Verknüpfung nützt in diesem Fall überhaupt nichts. Statt die Datei an eine leere email anzuhängen, schweigt Thunderbird beharrlich.

Durch die Erstellung einer Batch im Ordner SendTo können Sie dieses Problem beheben:

A. Erstellen Sie ein Textdokument: mit der rechten Maustaste auf freie Fläche im Ordner SendTo. Öffnen Sie das Leere Dokument und geben Sie folgenden angepassten Text ein:

"D:\thunderbird\ThunderbirdPortable\ThunderbirdPortable.exe" -compose "attachment='file:///%1'"

Beim Sternenhimmelstuermer liegt die ThunderbirdPortable.exe im o. a. Pfad: Sie müssen bei ihrer installierten Version die Datei thunderbird.exe (in Suchfunktion von W7 eingeben - am sichersten über Computer: C:\)  finden und den Pfad anpassen.

B. Danach schließen Sie die Datei und bestätigen die Nachfrage, ob die Änderungen in der Datei gespeichert wird mit ja.

C. Sollten Sie die Dateiendung (*.txt) nicht sehen, so müssen Sie die Ansicht dahingehend ändern, dass auch bei bekannten Dateien die Endung angezeigt wird:
Dateiendung: *.txt, nur anschaubar, wenn Sie in einem Ordner die Menüleiste aktivieren - durch Organisieren - Layout - die Menüleiste aktivieren -, dann unter Extras - Ordneroptionen - Registerkarte Ansicht - Erweiterungen bei unbekannten Dateitypen ausblenden deaktivieren - ganz einfach, nicht?

D. Danach vergeben sei der Batch einen beliebigen Namen - Nur die Endung muss .bat lauten und .txt ersetzen...

Erklärung: Thunderbird besitzt wie viele andere Anwendungen Parameter zum Aufrufen des Programmes per Batch. Bei Google finden Sie dann auch unter den Stichwörtern Thunderbird und Aufrufparameter z. B. diese Seite, wo die wichtigsten Parameter erklärt sind:

Der erste Teil der Batch startet dabei Thunderbird.
Die Option -compose kreiert eine neue email
und  "attachment='file:///%1'"  heißt nichts weiter, dass die Datei, die Sie mit dem Kontextmenü versendet haben, zu 100 % - in der Syntax der Kommandozeile %1 im jeweiligen Pfad  file:///  als Anhang (attachment) übergeben (=).    

-------


Dieses sollte als Einstieg erstmal reichen, wenn es Probleme geben sollte, die die Allgemeinheit betreffen mit %1 betreffen oder Fehler, so können Sie das gerne Posten - für einzelne Fragen besteht kaum die Möglichkeit einer Beantwortung....