Passez les arguments de ligne de commande à Windows «Ouvrir avec»


28

J'ai un programme qui s'ouvre avec un raccourci spécifique, mais le raccourci semble envoyer des paramètres à l'application. Si je vais directement dans le répertoire cible et que je double-clique, cela ne fonctionne pas. Cependant, si j'utilise la ligne de commande et que je passe un certain argument, l'application s'ouvre correctement.

Je souhaite ouvrir certains types de fichiers à l'aide de l'application, mais l'application doit avoir les paramètres, sinon cela ne fonctionnera pas. Est-il possible de faire ce genre de chose?


Quelle version de Windows utilisez-vous?
iglvzx

J'utilise Windows 7.
jtpereyda

1
Cela a de meilleures solutions: superuser.com/questions/136133/…

Réponses:


20

A rencontré le même problème que @jtpereyda et la solution de @bobbymcr n'a pas fonctionné pour moi non plus. J'essayais d'obtenir tous les paramètres de ligne de commande passés dans les scripts node.js sans avoir besoin de node.exe sur la commande.

Le problème est que si vous avez déjà associé le programme à l'extension via la Open Withboîte de dialogue, vous aurez créé une association d'application, au lieu d'une association d'extension de fichier, entre les deux. Et les associations d'applications ont priorité.

Si cela ne vous dérange pas de modifier le registre, vous pouvez modifier la (Default)clé au chemin suivant:

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

Vous devez remplacer node.exepar l'application que vous ajustez.

Ou vous pouvez simplement supprimer HKEY_CLASSES_ROOT\Applicationsentièrement le dossier d' application du dossier et votre ftypeassociation commencera à fonctionner.

Assurez-vous d'utiliser %*ce qui passera dans les arguments de ligne de commande non spécifiés restants ou rien du tout. Si vous le faites, "%2" "%3" "%4" "%5"vous obtiendrez 5 paramètres de chaîne vide passés dans votre application lorsque vous ne spécifiez aucun argument de ligne de commande.

Enfin, si vous n'êtes pas d'accord avec la modification manuelle du registre, vous pouvez utiliser un outil gratuit de Nirsoft - FileTypesManager - http://www.nirsoft.net/utils/file_types_manager.html

Les associations de fichiers apparaîtront en haut de la liste, sans aucun texte dans la première colonne d'extension. Trouvez simplement le nom de l'exécutable dans la liste et sélectionnez-le pour modifier le command linechamp du opennom de l' action.

Sous Windows7, les modifications ont été immédiatement reflétées sans redémarrage ni redémarrage de l'application. Cependant, l'utilitaire Nirsoft a une fonctionnalité pour "Actualiser le bureau" sur toute modification, donc cela me porte à croire que peut-être Vista ou les versions antérieures du système d'exploitation mettraient en cache les données. Dans ce cas, l'utilitaire serait un meilleur pari, sinon vous devrez peut-être vous déconnecter et vous connecter pour voir les modifications.


1
comme note: il semble que le% 1 devrait toujours être utilisé pour passer le fichier associé au programme. l'utilisation directe de% * ne semble pas fonctionner. Au moins j'ai eu un problème avec mon association ".pl" - perl sur ma victoire 7
vlad_tepesch

1
Je l'ai fait fonctionner par essais et erreurs, résultant en la valeur de données suivante: "C:\Program Files\nodejs\node.exe" "%1"%*REMARQUE: la %*valeur n'est PAS entre guillemets et n'a pas d'espace entre elle et la double guillemet précédente.
Michael Paulukonis

J'ai également supprimé la clé HKEY_CLASSES_ROOT\.ulawdans le regedit juste au cas où .ulawest l'extension des fichiers pour lesquels je faisais la procédure.
Matt

Comment pouvons-nous passer les arguments (par exemple «tester») lors de l'ouverture?
Apparao

Veuillez modifier cette réponse pour modifier explicitement "[HKLM | HKCU] \ Software \ Classes", en fonction du contexte d'installation. Ne modifiez pas HKCR directement. Voir les "considérations importantes" pour les types de fichiers et l' HKEY_CLASSES_ROOTarticle. C'est un malentendu compréhensible étant donné qu'une grande partie de la propre documentation de Microsoft est antérieure à la vue fusionnée pour HKCR qui a été introduite vers Windows 2000.
Eryk Sun

10

Vous pouvez le faire avec assocet ftypeà l'invite de commande. Ouvrez une invite de commande élevée et essayez ce qui suit:

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

Cela associera l' .xyzextension à MyProgram.exeet passera la ligne de commande /arg1 /arg2 [filename.xyz]au programme pour l'exécuter.


1
Accepté car cela semble être la bonne réponse de ce que j'ai recherché. Cependant, ce processus semble inefficace sur le système que j'utilise. Je peux utiliser ftype et assoc pour vérifier que les modifications ont bien été effectuées, mais cela n'affecte pas le programme utilisé pour ouvrir les fichiers. Peut-être que le processus a changé dans Windows 7?
jtpereyda

En utilisant la réponse de Marcus Pope, cela fonctionne correctement de mon côté en utilisant Windows 7. J'essayais de lire le .ulawfichier en soxutilisant des arguments prédéfinis. Notez qu'en plus de supprimer l'ancienne application, j'ai également supprimé HKEY_CLASSES_ROOT\.ulawce qui définissait le type de fichier.
Matt

CMD assocet ftypesont des commandes héritées. Ils n'ont pas été mis à jour pour les extensions des associations de fichiers ajoutées dans Windows XP, 7 et 8. Ils modifient uniquement l'association de fichiers et les clés ProgId sous la clé système "HKLM \ Software \ Classes". Ils ne lisent ni ne modifient les paramètres HKCU par utilisateur, qui ont la priorité, ou les sous-clés plus récentes telles que "Applications" et "SystemFileAssociations", ou les clés de capacités par application de "RegisteredApplications". Ils ne lisent pas ou ne modifient pas non plus le choix de l'utilisateur sous "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts".
Eryk Sun

3

La personne qui pose la question indique que la meilleure réponse ne fonctionne pas réellement.

Je l'ai compris pour XP, qui pourrait s'appliquer à un système d'exploitation ultérieur.

À l'invite cmd, vous avez besoin de deux commandes: assoc, ftype.

Ces deux éléments peuvent montrer ce qui est associé, puis modifier l'association, mais il y a une torsion, les instructions MS semblent incorrectes / incomplètes. J'ai été alerté de cela en remarquant un style d'association non documenté par des applications vétérans connues, pourquoi?

Cet exemple permet de transmettre de nombreux arguments au programme associé.

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

Pas une faute de frappe "%1" "%*". Le pourcentage d'étoile ne fonctionnera pas sans le pourcentage 1 précédent .

Et cela est mis en ligne immédiatement, pas besoin de se déconnecter, etc.

Fait à droite passera 3 à arg []

myfile.wotsit file1 file2 file3

Je ne l'ai pas fait, mais il semble que les guillemets extérieurs suivants passeraient -m si le programme a besoin d'un indicateur.

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

Je ne pense pas que ce soit correct. L'utilisation de guillemets autour de "% *" fera passer la liste des arguments comme un seul argument. En outre, vous avez manqué les deux points après la lettre de lecteur. La commande correcte doit être: ftype name_of_assoc = "C: \ blah \ aprog.exe" -m "% 1"% *
User0

J'utilise l'excellent programme FilesTypeMan, et dans ce cas, vous avez besoin %1 %* sans guillemets !!! fichues fenêtres
Jean-François Fabre

2

J'ai eu un problème similaire avec une ancienne version de PSP avec Windows7

Cette solution (changer le shell \ open \ ligne de commande dans le Registre) a fonctionné MAIS devait avoir la syntaxe "C: \ MyFolderName \ PSP.EXE"% 1 AUCUNE CITATION AUTOUR% 1 sinon cela est interprété comme une constante


1
pourquoi les downvotes? cette réponse m'a finalement aidé à obtenir la bonne commande!
ylka

MERCI - J'ai eu les devis et ça n'a pas fonctionné
Fiona - myaccessible.website

1

Ce n'est pas la meilleure solution mais la plus simple utilise un fichier batch.

Créez un fichier bat comme ça et définissez-y votre programme par défaut pour votre extension de fichier. Et oui, le devis vide après le démarrage est nécessaire:

{nom de l'application} .bat

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

Exemple:

BCompareEdit.bat

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

1
C'est la seule solution qui a fonctionné pour moi sur Windows 10. Elle m'aide à démarrer Word 2013 avec l'option / w pour avoir une nouvelle instance à chaque lancement, qui est nécessaire pour utiliser Word avec des bureaux virtuels.
vicmortelmans

0

Voici une extension qui semble faire exactement ce que vous voulez. Je ne l'ai jamais utilisé auparavant, mais il semble obtenir de bonnes critiques. laissez un commentaire s'il y a des problèmes.


-1

Créez un raccourci Windows et utilisez le modèle suivant:

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

2
Et comment l'utilisateur utilise-t-il cela pour ouvrir un fichier tel que xyz.jpg?
G-Man dit `` Réintègre Monica ''

Il a demandé comment changer de registre pour y parvenir.
roule le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.