Como posso definir o arquivo padrão aberto do Windows8 para inserir o nome do arquivo em um linha de comando oneliner?

0

Quando eu clico duas vezes em arquivos do tipo .xise, preciso que meu sistema execute o seguinte:

C: \ Xilinx \ 14.5 \ ISE_DS \ settings32.bat C: \ Xilinx \ 14.5 \ ISE_DS \ ISE \ bin \ nt \ ise.exe CAMINHO \ TO \ XISE \ FILE \ filename.xise

Quando eu definir o comportamento padrão para abrir com o arquivo "settings32.bat" (via Right Click > Properties > Abre com: > Change), tenho certeza que não inclui o "ise" necessário .exe "(o primeiro argumento para o arquivo .bat).

No entanto, o padrão que mapeia para settings64.bat no mesmo diretório funciona bem e não sei o que o instalador fez para mapeá-lo corretamente. (bem, a versão x64 não "funciona". Ela está com problemas e quebrada, mas por diferentes razões, portanto, o desejo de usar a versão de 32 bits.)

Não há nada no arquivo "settings64.bat" que não esteja no arquivo "settings32.bat" (apenas alguns pontos em que 64 muda para 32), portanto, não é o caso do "settings64. bat "arquivo simplesmente não precisa do arquivo" ise.exe "; ele precisa, mas eu não sei como inseri-lo corretamente.

Eu pesquisei por todos os lados e não consigo descobrir o que pesquisar para resolver esse problema.

Obrigado

    
por win8_default_programs_question 07.02.2015 / 08:19

1 resposta

0

Como você diz: "... mas por diferentes razões, portanto, o desejo de usar a versão de 32 bits".

  • Como descobrir a ação padrão do arquivo .xise :

De um script em lote:

assoc .xise
for /F "tokens=2 delims==" %%G in ('assoc .xise') do (
      for /f "tokens=*" %%I in ('ftype %%G') do echo %%I
)

Ou para executar o comando for na linha de comando:

for /F "tokens=2 delims==" %G in ('assoc .xise') do for /f "tokens=*" %I in ('ftype %G') do echo %I
  • Como restabelecer a ação padrão para seu arquivo .xise

(de um script em lote, precisa ser executado como administrador):

::  discover the association between our file Extension and current file Type
set "xiseFileType=xiseFile"
for /F "tokens=2 delims==" %%G in ('assoc .xise') do set "xiseFileType=%%G"

:: set variables for better readability next 'ftype' command
set "batchToRun=C:\Xilinx.5\ISE_DS\settings32.bat"
set "bat1stPar=C:\Xilinx.5\ISE_DS\ISE\bin\nt\ise.exe"

:: define 'cmd.exe' full path: 
:: default version (32-bit or 64-bit dependent on Windows version installed): 
set "com32exe=%comspec%"

:: but we need (non-default) 32-bit version of command interpreter:
if exist "C:\Windows\SysWOW64\cmd.exe" set "com32exe=C:\Windows\SysWOW64\cmd.exe"

:: The FileType should always be created before making a File Association
ftype %xiseFileType%=%com32exe% /D /C call "%batchToRun%" "%bat1stPar%" "%%1" %%*
assoc .xise=%xiseFileType%

Em outras palavras: agora a ação padrão do seu arquivo .xise deve ser a seguinte (tudo na única linha):

C:\Windows\SysWOW64\cmd.exe /D /C call "C:\Xilinx.5\ISE_DS\settings32.bat" "C:\Xilinx.5\ISE_DS\ISE\bin\nt\ise.exe" "%1" %*

Aqui "%1" será expandido para o seu "PATH\TO\XISE\FILE\filename.xise" quando clicado duas vezes.

E que tal %%* no último comando ftype ? Nunca tema: deixe-o ou limpe-o, pois ele se expandirá para uma string vazia sempre :)

    
por 07.02.2015 / 21:42