Passar argumentos da linha de comando para o Windows “Open With”

22

Eu tenho um programa que abre com um atalho específico, mas o atalho parece enviar parâmetros para o aplicativo. Se eu for diretamente para o diretório de destino e clicar duas vezes, isso não funcionará. No entanto, se eu usar a linha de comando e passar um certo argumento, o aplicativo abrirá corretamente.

Eu quero abrir determinados tipos de arquivos usando o aplicativo, mas o aplicativo deve ter os parâmetros ou não funcionará. É possível fazer esse tipo de coisa?

    
por jtpereyda 27.11.2011 / 04:31

7 respostas

17

Corri para o mesmo problema que @jtpereyda e a solução da @bobbymcr também não funcionou para mim. Eu estava tentando obter todos os parâmetros de linha de comando passados para scripts node.js sem a necessidade de node.exe no comando.

O problema é que, se você já associou o programa à extensão através da caixa de diálogo Open With , você terá criado uma associação de aplicativo, em vez de uma associação de extensão de arquivo, entre as duas. E as associações de aplicativos têm precedência.

Se você não se importar de editar o registro, poderá modificar a chave (Default) no seguinte caminho:

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

Você deve substituir node.exe pelo aplicativo que está ajustando.

Ou você pode simplesmente excluir totalmente a pasta do aplicativo da pasta HKEY_CLASSES_ROOT\Applications e sua associação ftype começará a funcionar.

Certifique-se de usar %* , que passará nos argumentos de linha de comando não especificados restantes ou nada. Se você fizer "%2" "%3" "%4" "%5" , você receberá 5 params de cadeia vazia passados para o seu aplicativo quando você não especificar nenhum argumento de linha de comando.

Por fim, se você não estiver de acordo com a modificação manual do registro, use a ferramenta freeware da Nirsoft - FileTypesManager - link

As associações de arquivos aparecerão no topo da lista, sem qualquer texto na primeira coluna de extensão. Basta encontrar o nome do executável na lista e selecioná-lo para modificar o campo command line para o nome da ação open .

No windows7, as alterações foram refletidas imediatamente, sem qualquer reinicialização ou reinicialização do aplicativo. No entanto, o utilitário Nirsoft tem um recurso para "Atualizar o Desktop" em qualquer modificação, por isso leva-me a acreditar que talvez o Vista ou versões anteriores do sistema operacional armazenem os dados em cache. Nesse caso, o utilitário seria uma aposta melhor, caso contrário, talvez seja necessário fazer logoff e fazer logon para ver as alterações.

    
por 23.07.2012 / 18:54
10

Você pode fazer isso com assoc e ftype no prompt de comando. Abra um prompt de comando elevated e tente o seguinte:

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

Isso associará a extensão .xyz a MyProgram.exe e passará a linha de comando /arg1 /arg2 [filename.xyz] para o programa para executá-la.

    
por 27.11.2011 / 10:49
1

A pessoa que faz a pergunta reporta a melhor resposta não funciona de fato.

Eu descobri o XP, que pode se aplicar ao sistema operacional posterior.

Em um prompt de cmd, você precisa de dois comandos: assoc , ftype .

Estes dois podem mostrar o que está associado e, em seguida, editar a associação, mas há uma reviravolta, as instruções do MS parecem estar erradas / incompletas. Fui alertado para isso ao notar um estilo de associação não documentado por aplicativos veteranos conhecidos, por quê?

Este exemplo permite que muitos argumentos sejam passados para o programa associado.

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

Não é um erro de digitação que é "%1" "%*" . A estrela percentual não funcionará sem o percentual 1 anterior.

E isso acontece imediatamente, sem necessidade de sair, etc.

Feito corretamente, passará 3 para arg []

myfile.wotsit file1 file2 file3

Ainda não o fiz, mas parece que as seguintes citações externas passariam -m se o programa necessitasse de uma bandeira.

ftype name_of_assoc="C\blah\aprog.exe" -m "%1" "%*"
    
por 22.11.2013 / 16:07
1

Eu tive um problema semelhante com uma versão mais antiga do PSP com o Windows7

Esta solução (altere o shell \ open \ linha de comando no Registro) funcionou, mas tinha que ter a sintaxe "C: \ MyFolderName \ PSP.EXE"% 1 NO QUOTAS AO REDOR% 1 caso contrário isto é interpretado como uma constante

    
por 20.05.2015 / 19:34
0

Aqui é uma extensão que parece fazer exatamente o que você quer. Eu nunca usei isso antes, mas parece ter boas críticas. deixe um comentário se houver problemas.

    
por 27.11.2011 / 05:13
0

Não é a melhor solução, mas a mais fácil é usar um arquivo em lotes.

Crie um arquivo bat assim e configure seu programa padrão para sua extensão de arquivo. E sim, a cotação vazia após o início é necessária:

{nome do aplicativo} .bat

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

Exemplo:

BCompareEdit.bat

    start "" "C:\Program Files\Beyond Compare 4\BCompare.exe" %1 /edit
    
por 22.07.2017 / 16:52
-1

Crie um atalho do Windows e use o seguinte modelo:

"C:\Windows\system32\mspaint.exe" "c:\data\basejpg.jpg" %1
    
por 30.11.2017 / 06:58

Tags