Befehlszeilenargumente an Windows "Öffnen mit" übergeben


28

Ich habe ein Programm, das mit einer bestimmten Verknüpfung geöffnet wird, aber die Verknüpfung scheint Parameter an die Anwendung zu senden. Wenn ich direkt in das Zielverzeichnis gehe und doppelklicke, funktioniert es nicht. Wenn ich jedoch die Befehlszeile verwende und ein bestimmtes Argument übergebe, wird die Anwendung ordnungsgemäß geöffnet.

Ich möchte bestimmte Dateitypen mit der Anwendung öffnen, aber die Anwendung muss die Parameter haben, sonst funktioniert es nicht. Ist es möglich, so etwas zu tun?


Welche Windows-Version verwenden Sie?
Iglvzx

Ich benutze Windows 7.
jtpereyda

1
Dies hat bessere Lösungen: superuser.com/questions/136133/...

Antworten:


20

Stieß auf das gleiche Problem wie @jtpereyda und die Lösung von @bobbymcr hat auch bei mir nicht funktioniert. Ich habe versucht, alle Befehlszeilenparameter an node.js-Skripte zu übergeben, ohne dass node.exe für den Befehl erforderlich ist.

Das Problem ist, dass Sie, wenn Sie das Programm bereits über das Open WithDialogfeld mit der Erweiterung verknüpft haben, eine Anwendungszuordnung anstelle einer Dateierweiterungszuordnung zwischen den beiden erstellt haben. Und Anwendungszuordnungen haben Vorrang.

Wenn Sie nichts dagegen haben, die Registrierung zu bearbeiten, können Sie den (Default)Schlüssel unter folgendem Pfad ändern :

HKEY_CLASSES_ROOT\Applications\node.exe\shell\open\command

Sie sollten es durch node.exedie Anwendung ersetzen, die Sie anpassen.

Oder Sie löschen einfach den Anwendungsordner HKEY_CLASSES_ROOT\Applicationsvollständig aus dem Ordner, und Ihre ftypeZuordnung wird ausgeführt.

Stellen Sie sicher, dass Sie verwenden, %*welche der verbleibenden nicht angegebenen Befehlszeilenargumente oder gar nichts übergeben werden. In "%2" "%3" "%4" "%5"diesem Fall werden 5 leere Zeichenfolgenparameter an Ihre Anwendung übergeben, wenn Sie keine Befehlszeilenargumente angeben.

Wenn Sie nicht in der Lage sind, die Registrierung manuell zu ändern, können Sie ein Freeware-Tool von Nirsoft verwenden - FileTypesManager - http://www.nirsoft.net/utils/file_types_manager.html

Dateizuordnungen werden am Anfang der Liste ohne Text in der ersten Erweiterungsspalte angezeigt. Suchen Sie einfach den Namen der ausführbaren Datei in der Liste und wählen Sie ihn aus, um das command lineFeld für den openAktionsnamen zu ändern .

Unter Windows 7 wurden die Änderungen sofort ohne Neustart oder Neustart der Anwendung übernommen. Das Nirsoft-Dienstprogramm verfügt jedoch über eine Funktion zum "Aktualisieren des Desktops" bei allen Änderungen, sodass ich vermute, dass möglicherweise Vista oder frühere Betriebssystemversionen die Daten zwischenspeichern würden. In diesem Fall ist das Dienstprogramm die bessere Wahl. Andernfalls müssen Sie sich möglicherweise abmelden und anmelden, um die Änderungen zu sehen.


1
als hinweis: es scheint, dass% 1 immer verwendet werden sollte, um die zugehörige Datei an das Programm zu übergeben. Die direkte Verwendung von% * scheint nicht zu funktionieren. Zumindest habe ich ein Problem mit meiner ".pl"
-Perl-

1
Ich habe es durch Versuch und Irrtum zum Laufen gebracht, was zu dem folgenden Datenwert führte: "C:\Program Files\nodejs\node.exe" "%1"%*HINWEIS: Der %*Wert ist NICHT in Anführungszeichen und enthält kein Leerzeichen zwischen ihm und dem vorherigen doppelten Anführungszeichen.
Michael Paulukonis

Ich habe auch HKEY_CLASSES_ROOT\.ulawden regedit- Schlüssel gelöscht, nur für den Fall, dass .ulawsich die Erweiterung der Dateien befindet, für die ich den Vorgang ausgeführt habe.
Matt

Wie können wir die Argumente (sagen wir 'testing') beim Öffnen weitergeben?
Apparao

Bitte ändern Sie diese Antwort, um "[HKLM | HKCU] \ Software \ Classes" abhängig vom Installationskontext explizit zu ändern. Ändern Sie HKCR nicht direkt. Siehe die „wichtigen Überlegungen“ für Dateitypen und den HKEY_CLASSES_ROOTArtikel. Es ist ein verständliches Missverständnis, da ein Großteil der Microsoft-eigenen Dokumentation älter ist als die zusammengeführte Ansicht für HKCR, die um Windows 2000 eingeführt wurde.
Eryk Sun

10

Sie können dies mit assocund ftypean der Eingabeaufforderung tun . Öffnen Sie eine Eingabeaufforderung mit erhöhten Rechten und versuchen Sie Folgendes:

ftype MyFileType = C: \ MyDir \ MyProgram.exe / arg1 / arg2 "% 1"
assoc .xyz = MyFileType

Dadurch wird die .xyzErweiterung zugeordnet MyProgram.exeund die Befehlszeile /arg1 /arg2 [filename.xyz]an das Programm übergeben, um sie auszuführen.


1
Akzeptiert, weil dies die richtige Antwort auf meine Forschungen zu sein scheint. Dieser Vorgang scheint jedoch auf dem von mir verwendeten System ineffektiv zu sein. Ich kann ftype und assoc verwenden, um zu überprüfen, ob die Änderungen durchgeführt wurden, dies hat jedoch keine Auswirkungen auf das zum Öffnen von Dateien verwendete Programm. Vielleicht hat sich der Prozess in Windows 7 geändert?
jtpereyda

Wenn ich die Antwort von Marcus Pope verwende , funktioniert sie auf meiner Seite unter Windows 7. Ich habe versucht, eine .ulawDatei mit soxvordefinierten Argumenten abzuspielen . Beachten Sie, dass ich zusätzlich zum Löschen der alten Anwendung auch HKEY_CLASSES_ROOT\.ulawdie Datei gelöscht habe, die den Dateityp definiert hat.
Matt

CMDs assocund ftypesind Legacy-Befehle. Sie wurden für die Erweiterungen der in Windows XP, 7 und 8 hinzugefügten Dateizuordnungen nicht aktualisiert. Sie ändern nur die Dateizuordnung und die ProgId-Schlüssel unter dem Systemschlüssel "HKLM \ Software \ Classes". Sie lesen oder ändern keine HKCU-Einstellungen pro Benutzer, die Vorrang haben, oder die neueren Unterschlüssel wie "Applications" und "SystemFileAssociations" oder Funktionsschlüssel pro Anwendung von "RegisteredApplications". Sie lesen oder ändern auch nicht die Benutzerauswahl unter "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts".
Eryk Sun

3

Die Person, die die Frage gestellt hat, gibt an, dass die beste Antwort nicht funktioniert.

Ich habe es für XP herausgefunden, was auf ein späteres Betriebssystem zutreffen könnte.

An einer Eingabeaufforderung von cmd benötigen Sie zwei Befehle: assoc, ftype.

Diese beiden können zeigen, was zugeordnet ist, und dann die Zuordnung bearbeiten, aber es gibt eine Wendung, die MS-Anweisungen scheinen falsch / unvollständig zu sein. Ich wurde darauf aufmerksam gemacht, als mir bekannte Veteranenanwendungen einen undokumentierten Assoziationsstil auffielen. Warum?

In diesem Beispiel können viele Argumente an das zugehörige Programm übergeben werden.

ftype name_of_assoc="C\blah\aprog.exe" "%1" "%*"

Das ist kein Tippfehler "%1" "%*". Der Prozentstern funktioniert nicht ohne den vorhergehenden Prozentwert 1 .

Und das geht sofort online, ohne dass Sie sich abmelden müssen usw.

Mit der rechten Maustaste wird 3 an arg übergeben. []

myfile.wotsit file1 file2 file3

Habe es nicht getan, aber es sieht so aus, als würden die folgenden Anführungszeichen -m passieren, wenn das Programm ein Flag benötigt.

ftype name_of_assoc="C\blah\aprog.exe" -m "%1" "%*"

Das halte ich nicht für richtig. Bei Verwendung von Anführungszeichen um "% *" wird die Liste der Argumente als einzelnes Argument übergeben. Außerdem haben Sie den Doppelpunkt nach dem Laufwerksbuchstaben verpasst. Der korrekte Befehl sollte lauten: ftype name_of_assoc = "C: \ blah \ aprog.exe" -m "% 1"% *
User0

Ich benutze das exzellente FilesTypeMan Programm, und in diesem Fall brauchst du %1 %* ohne Anführungszeichen !!! verdammte Fenster
Jean-François Fabre

2

Ich hatte ein ähnliches Problem mit einer älteren Version von PSP mit Windows7

Diese Lösung (Änderung der Shell \ open \ -Befehlszeile in der Registrierung) funktionierte, musste jedoch die Syntax "C: \ MyFolderName \ PSP.EXE"% 1 NO QUOTES AROUND% 1 haben, da dies ansonsten als Konstante interpretiert wird


1
warum die downvotes? Diese Antwort hat mir geholfen, endlich den Befehl richtig zu machen!
Ylka

DANKE - Ich hatte die Zitate und es hat nicht funktioniert
Fiona - myaccessible.website

1

Nicht die beste Lösung, aber die einfachste ist die Verwendung einer Batch-Datei.

Erstellen Sie eine solche bat-Datei und stellen Sie Ihr Standardprogramm für Ihre Dateierweiterung darauf ein. Und ja, das leere Zitat nach dem Start ist notwendig:

{app name} .bat

    start "" "{app path}" %1 /edit

Beispiel:

BCompareEdit.bat

    start "" "C:\Program Files\Beyond Compare 4\BCompare.exe" %1 /edit

1
Dies ist die einzige Lösung, die unter Windows 10 funktioniert hat. Sie hilft mir, Word 2013 mit der Option / w zu starten, um bei jedem Start eine neue Instanz zu haben, die für die Verwendung von Word mit virtuellen Desktops erforderlich ist.
Vicmortelmans

0

Hier ist eine Erweiterung, die genau das tut, was Sie wollen. Ich habe es noch nie benutzt, aber es scheint gute Kritiken zu bekommen. Hinterlasse einen Kommentar, wenn es Probleme gibt.


-1

Erstellen Sie eine Windows-Verknüpfung und verwenden Sie die folgende Vorlage:

"C:\Windows\system32\mspaint.exe" "c:\data\basejpg.jpg" %1

2
Und wie öffnet der Benutzer damit eine Datei wie xyz.jpg?
G-Man sagt, dass Monica

Er fragte, wie die Registrierung geändert werden könne, um dies zu erreichen.
Brötchen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.