Iniciar um programa baseado em um curinga em um script em lote

6

Estou criando um script de configuração para um programa desenvolvido por outra pessoa. Seu instalador não será instalado em uma versão existente, então eu preciso desinstalar instalações anteriores.

O desinstalador é denominado unins $ num.exe, onde o $ num é um número que parece ser incrementado toda vez que o programa é instalado (por exemplo, unins000.exe, unins001.exe, unins002.exe).

Estou usando um script em lote do MS-DOS no momento, já que outras pessoas em meu departamento teriam a chance de mantê-lo, mas se for muito mais fácil em outro idioma, estou aberto a mudanças. O único requisito é que eu não possa instalar um interpretador primeiro, então ele deve ser construído no Windows.

As minhas plataformas de destino são o Windows XP e o Windows 7. O suporte do Windows Vista é bom, mas não é obrigatório.

Como posso usar um caractere curinga para iniciar o programa, então não preciso listar 1000 exe's possíveis?

    
por daxlerod 30.03.2011 / 16:16

1 resposta

8

Isso pressupõe que a pasta de destino contenha apenas um único executável unins $ num.exe e que o script em lote esteja na mesma pasta que o desinstalador:

@echo off
FOR /f "tokens=*" %%G IN ('dir /b unins*.exe') DO %%G

Em termos básicos, ele apenas passa pela saída de dir /b unins*.exe e executa cada resultado um por um.

Se você quisesse que o script em lote pudesse ser executado a partir de outro local (mas ainda mantido na mesma pasta do executável de desinstalação), você poderia adicionar% ~ dp0 (o caminho do script em lote) ao script:

@echo off
FOR /f "tokens=*" %%G IN ('dir /b %~dp0\unins*.exe') DO %~dp0\%%G

Por fim, se você quiser o script em lote em uma pasta diferente do executável de desinstalação, basta substituir% ~ dp0 por qualquer que seja o caminho completo, por exemplo, se o desinstalador estiver em C:\CoolProgram :

@echo off
FOR /f "tokens=*" %%G IN ('dir /b C:\CoolProgram\unins*.exe') DO C:\CoolProgram\%%G
    
por 30.03.2011 / 16:35