Na verdade, parece que você precisa especificar em qual pasta% target% está, a menos que de alguma forma o caminho do Office esteja em% PATH%.
Eu quero me livrar do OSPPSVC (Serviço de Plataforma de Proteção de Software do Office).
Depois, substituí os links para abrir programas do Office com um link para launcher.bat
:
@echo off
title Launching Office...
Set target=%1
sc config osppsvc start= demand
net start osppsvc
:check
if exist "%target%.exe" goto launch
Set/p target="Introduce the program to open:"
goto check
:launch
start %target%.exe %2
sleep 10
sc config osppsvc start= disabled
net stop osppsvc
E eu posso abrir arquivos se, no console, eu entrar:
"C:\Path\To\Office14\launcher.bat" winword "C:\Path\To\File\doc.docx"
Mas, como quero a integração do explorer, tentei associar a extensão .docx
a ser aberta com
"C:\Path\To\Office14\launcher.bat" winword "%1"
Mas isso não funciona: o arquivo de lote é executado, mas não abre o Word (ele pergunta "Introduce the program to open:").
Editar : código fixo:
@echo off
title Launching Office...
Set name=%1
sc config osppsvc start= demand
net start osppsvc
:check
Set target="%~dp0%name%.exe"
if exist %target% goto launch
Set/p name="Introduce the program to open:"
goto check
:launch
start "" %target% %2
sleep 10
sc config osppsvc start= disabled
net stop osppsvc