Hallo zusammen, ich suche eine Möglichkeit, die Zuordnung von Dateiendungen zu Programmen so zu verwenden, dass nicht, wie üblich, eine .EXE, sondern eine .BAT mit der rechten Maustaste gestartet werden kann. Innerhalb der aufzurufenden Batch-Datei wird letztendlich wieder eine .EXE gestartet, aber vorab werden eine Menge Daten aufbereitet. Ich habe kein Problem, den entsprechenden Eintrag in der Registry zu machen, aber alle Versuche, die ich bisher gemacht habe, sind ebenso wie meine Websuche gescheitert. Nebenbei: Über die Registry lege ich auch andere Aufruf-Optionen für die rechte Maustaste fest. Nicht funktioniert hat z. B. für die Zuordnung .XXX -> Konverter1.bat in [HKEY_CLASSES_ROOT\XXXFile\shell\Konverter1\command] = cmd "Konverter1.bat %1" mit verschiedenen Optionen und Anführungszeichen. Geht das überhaupt? Das ganze unter Windows 10, das ohnehin sich ziemlich unwillig anstellt, wenn man Dateiendungen zuordnen will. Beispiel: Eine Möglichkeit, in den Eigenschaften mehrere Optionen anzugeben, was früher einfach war, habe ich noch nicht gefunden. Das schaffe ich nur über die Registry.
Uwe B. schrieb: > dass nicht, wie üblich, eine .EXE, sondern eine .BAT mit der rechten > Maustaste gestartet werden kann. ? Wenn ich einen Rechtsklick auf eine *.bat-Datei ausführe, ist die im Kontextmenü hervorgehobene Standardaktion "Öffnen" - und das wiederum lässt den Kommandozeilenprozessor cmd.exe die Datei ausführen. Was genau willst Du erreichen? Bellst Du möglicherweise den falschen Baum an?
Hi Rufus, ich will mit einem Rechtsklick auf eine nicht-Batch Datei (keine .EXE!) einen Batch starten. So, wie ich auch mit einem Rechtsklick auf andere nicht-ausführbare Dateien eine .EXE starten kann, will ich ich eine BAT starten (der dann der Dateiname, wie beim Start von .EXE, als %1 übergeben wird). Wie konnte das unklar sein? Und dass man Batch-Dateien sowohl mit Rechts- als auch mit Linksklick starten kann, ist mir schon etwas länger bekannt... Ich habe mal in der Registry nach dem Syntax zum Start einer .BAT geforscht. Einfach übernehmen geht nicht aber beim Modifizieren kam letztendlich auch nicht anderes bei heraus, als bei den Versuchen, die ich schon vorher gemacht hatte. Ich könnte auch ein vereinfachtes Beispiel konstruieren, um das Ziel klarer zu machen. Uwe
... Du möchtest die angewählte Datei also per rechtsclick an eine Bat-Datei übergeben, so wie man sie sonst an eine exe übergibt.
Man könnte einen neuen Eintrag ins Kontextmenü vornehmen. Dafür siehe beispielhaft: http://www.wintotal.de/tipparchiv/?id=847
@Philip: ja, so ist es auch kurz und knackig formuliert. @M404: der Eintrag im Kontextmenü existiert schon, siehe meinen ersten Beitrag. Das ist nicht da Problem. Das Problem ist, dass entweder eine .BAT über das Kontext-Menü gar nicht gestartet werden kann, oder dass ich nicht weiß, wie man das macht bzw. die notwendige Syntax nicht kenne. Auch in dem Link wird nicht auf .BAT eingegangen. Wie schon gesagt: Eine .BAT direkt aufzurufen und laufen zu lassen ist kein Problem, denn dann wird sie der cmd.EXE übergeben, so dass prinzipiell auch hier nur eine .EXE gestartet wird, der die .BAT übergeben wird. Ich will aber eine .IRGENDWAS einer MACH_MAL_WAS_MIT_IRGENDWAS.BAT übergeben, die ihrerseits dann natürlich innerhalb cmd.EXE laufen müsste. Zur Info: Früher, unter XP, verwies dieser jetzt auch wieder in Win 10 im Kontextmenü existierende Eintrag auf eine .EXE, die die gewünschte Funktion vollständig erfüllte. Sozusagen eine MACH_MAL_WAS_MIT_IRGENDWAS.EXE. Jetzt, unter Win 10, läuft diese .EXE nur noch dann, wenn vorher bestimmte Dateien korrekt vorbereitet werden. Da sehe ich, außer alles von Hand machen, nur eine Batch-Datei als Lösung. Innerhalb dieser Batch-Datei werden die notwendigen Vorbereitungen getroffen und die alte .EXE gestartet. Grüße, Uwe P.S.: Da fällt mir noch einfaches Beispiel für die Aufgabenstellung ein: Wie kann man mit einem Eintrag im Kontextmenü dafür sorgen, dass bei einem Rechtsklick auf eine .TXT die angeklickte Datei gleichzeitig in Word, Notepad++ und Notepad geöffnet wird? Wer mir das zeigt, dürfte auch die Lösung für meine Frage wissen.
Dann lass es mich algorithmisch präzisieren. Folgendes funktioniert (selbst getestet) unter Win7: 1. In Adresszeile im Win-Explorer eingeben: shell:sendto 2. Verknüpfung erstellen für deine *.bat 3. Rechtsklick auf *.IRGENDWAS ->Senden An "Name für deine Verknüpfung aus 2." In der *.bat kann man den Übergabewert %1, in diesem die Adresse als string beispielhaft folgendermaßen verwenden: -innerhalb der *.bat------------------------------- 0 @echo off & set /p Zeile=<%1 1 Echo Zeile 1 in "%1" ist: [%Zeile%] 2 3 start notepad %1 4 start write %1 --------------------------------------------------- 0-1 Verarbeitung (Ausagebe der 1.Zeile) aus der *.IRGENDWAS direkt in der *.bat 3-4 Adresse der Datei als Übergabewert für andere Programme (exemplarisch Notepad und Wordpad)
Die normalerweise für die Übergabe einer Datei an eine Batch vorgesehene Aktion ist halt nicht der Rechtsklick und die Auswahl aus dem Kontextmenü, sondern schlicht Drag and Drop - schnapp dir die Datei, zieh sie auf die Batch oder deren Verknüpfung und fertig. Ist eigentlich viel einfacher als irgendwelche Kontextmenü-Wursteleien. Nur so als Alternativ-Vorschlag.
Das war sehr hilfreich. Im Wesentlichen hat es mir zwar nur geholfen, einen eigenen, blöden Fehler zu finden, aber ich habe auch neue Funktionen für Batch-Dateien kennen gelernt. (Früher war alles einfacher...) Im Prinzip hatte bei mir schon alles fast richtig gelaufen. Der Batch selber hatte schon per Kommandozeile funktioniert, allerdings hatte ich in der Kommandozeile nur den Dateinamen für %1, also ohne Pfad und ohne Extension angegeben. Aber ich hatte nicht erkannt, dass beim Aufruf über das Kontext-Menü %1 Pfad und Extension enthielt, worauf im Batch die Datei nicht gefunden wurde und die Abarbeitung abgebrochen wurde. Die für solche Fälle vorgesehene Meldung war nicht mehr sichtbar. Deshalb dachte ich dass, der Batch gar nicht gestartet wurde oder %1 nicht übergeben wurde. Da in meinem Batch eine Datei mit gleichem Namen, aber anderer Extension erzeugt wird, muss ich jetzt den Dateinamen von Pfad und Extension trennen. Zumindest muss ich die Extension abtrennen. Aber wie das geht, sollte ich auch noch alleine heraus finden. Ähnlich Konstrukte mit For /f etc. zum Vergleich vom Datum zweier Dateien habe ich schon in Betrieb. Danke noch mal ? Uwe
Uwe B. schrieb: > worauf im Batch die > Datei nicht gefunden wurde und die Abarbeitung abgebrochen wurde. Im Batch am Ende "Pause" schreiben, dann bleibt das Ausgabefenster stehen. Wenn alle läuft, kann man es wieder löschen oder auskommentieren ":Pause".
Alternative zur Batchdatei: VBscript. Bietet deutlich "mächtigere" Möglichkeiten zur String- und sonstigen Variablenverarbeitung, kann per Automation Programme steuern und auch auf die Registry zugreifen, und der Interpreter (cscript.exe) ist Bestandteil jeder Windows-Installation.
Mit Pause arbeite ich oft, aber hier hatte ich angenommen, dass der Batch gar nicht erst gestartet wurde, weil nichts zu sehen war... Andererseits hatte ich auch für möglich gehalten, dass %1 nicht übergeben wurde. Da hätte ich untersuchen können, was da genau passiert - ach, ich hab' irgendwie gepennt.
Peter D. schrieb: > Im Batch am Ende "Pause" schreiben, dann bleibt das Ausgabefenster > stehen. > Wenn alle läuft, kann man es wieder löschen oder auskommentieren > ":Pause". Das Programm soll erst mal richtig arbeiten, dann hat es eine Pause verdient. Grüße Richard
Richard H. schrieb: > Das Programm soll erst mal richtig arbeiten, dann hat es eine Pause > verdient. Ja, dann habe ich mir jetzt eine Pause verdient. Alles klappt so, wie beabsichtigt. Es gab noch verschiedene Hürden, z. B., dass die Umgebungsvariablen beim Aufruf aus dem Kontextmenü nicht mit denen in der Eingabeaufforderung überein stimmen. Dazu, wie geschrieben, die Zerlegung des Übergabeparameters (dateipfad\dateiname.extension) in Einzelteile - na, ja, das ist mir zwar nicht gelungen, aber in dateipfad\dateiname hat gereicht. Da musste ich noch manche Pause einlegen - pardon, einfügen, bis es geklappt hat. Grüße, Uwe
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.