Como usar um .bat para abrir um tipo de arquivo com um programa configurado em lote? [duplicado]

1

Estou tentando modificar o trabalho de um predecessor para melhorar nosso fluxo de trabalho. Ele usou um atalho para um arquivo * .bat e um arquivo * .exe para configurar e depois iniciar nosso software de engenharia altamente controlado. Isso funciona muito bem para iniciar o programa, mas isso significa que não podemos configurar o software como o programa padrão para abrir o tipo de arquivo. Isso significa que sempre precisamos abrir arquivos por meio da GUI do software de engenharia, que não tem recursos de classificação e pesquisa (essenciais em pastas com milhares de peças de engenharia).

Atualmente, o atalho vai para: %Sharedrive1%\bin\licenseconfig.bat engrCAD.exe

Eu achei que talvez começar engrCAD.exe do .bat me permitiria usar o .bat como editor padrão criando um .bat ConfigNLaunchEngrCAD.bat que tem o conteúdo do original .bat mais start "" engrCAD.exe até o final do arquivo .bat. Isso funcionou na abertura do programa diretamente do .bat, mas ainda não dá em nada quando tento abrir um arquivo no engrCAD através do ConfigNLaunchEngrCAD.bat.

Eu acho que o que eu preciso fazer é tornar o script em lote capaz de pegar o nome do arquivo como um parâmetro e passá-lo para o software CAD. Mas não consigo encontrar como implementar isso. É um parâmetro que posso adicionar ao comando start para aceitar o nome do arquivo e o diretório selecionado? Ou eu deveria usar um comando diferente todos juntos para conseguir isso?

Muito obrigado, amigos.

EDITAR

Estou tendo problemas para ver a semelhança com a outra pergunta. Eu estou procurando uma maneira de executar um exe após uma configuração de .bat através de janelas que permitirá que ele seja definido como um programa padrão para um tipo de arquivo específico. O outro post tem semelhanças nas palavras-chave "passar parâmetros", mas pouco mais em comum. Se eu estiver errado, desculpe-me, mas talvez precise de um pouco mais de ajuda para ver como a outra solução é aplicável a essa situação.

Este pergunta é mais semelhante, mas em vez de inserir o nome do arquivo no prompt cmd, eu quero que ele seja capaz de obter o caminho do arquivo de mim abrindo o arquivo no windows com o .bat como o programa padrão.

    
por Ted 06.07.2017 / 19:34

2 respostas

1

Eu fiz algo semelhante em meu escritório, também temos um arquivo de lote herdado que administra a distribuição de licenças para o nosso software. Dependendo de quantos tipos de arquivos você está lidando e se os usa em outros programas, essa solução pode funcionar para você. Para o registro eu nunca tinha ouvido falar dessas ferramentas CMD, mas estou super feliz por eu saber sobre elas agora.

Aqui está o texto original da resposta que encontrei, o link está abaixo:

Use Ftype & Assoc para corrigir isso (e é scriptable).

Use o Assoc para obter o tipo de arquivo

>Assoc .txt

oferece:

.txt = txtfile

Então

>Ftype txtfile=C:\Program Files (x86)\Notepad++\notepad++.exe %1

Depois de conhecer o tipo de arquivo, você pode usar o Ftype para associá-lo a uma ação.

Isso funcionaria para arquivos .php (basta plop-los em um arquivo de lote)

Assoc .php=phpfile
Ftype phpfile="C:\Program Files (x86)\Notepad++\notepad++.exe" %1

E você pode copiar essas linhas para adicionar outros arquivos baseados em texto como você gostaria.

Associar programaticamente as extensões de arquivo ao aplicativo no Windows

    
por 07.07.2017 / 01:16
0

Haha, eu resolvi isso! Eu ainda não tenho ideia do que estou fazendo, mas aqui está o que eu fiz depois de muita tentativa e erro:

No início do .bat, adicionei:     Definir var1 =% 1     Set var2 =% 2

No final do .bat, eu mudei o 'Start "" engrCAD.exe' para remover o Start e apenas executar o .exe:     engrCAD.exe% var1%% var2%

Acredito que arrastar e soltar funcionou depois que eu adicionei var1 porque a localização e o nome do arquivo foram o primeiro parâmetro passado para o .exe. Aparentemente, ao abrir o arquivo via associação de programa padrão, o nome do arquivo / localização não é o primeiro parâmetro? Então, adicionar var2 fez com que funcionasse para ambos os casos.

Qualquer um que realmente saiba o que está acontecendo ... fique à vontade para comentar e corrigir minha interpretação.

    
por 07.07.2017 / 01:49