Você precisa de IF EXIST
em vez de apenas IF
para a programação em lote.
por exemplo,
IF NOT EXIST "C:\Program Files\Microsoft Security Client" (
:: Install product
)
Eu quero instalar alguns programas através de um script de inicialização, mas assim que ele for executado pela primeira vez, ele apenas reinstalará o tempo perdido e a sobrescrita. É um servidor 2008 R2.
Em algum lugar eu encontrei isso
IF NOT "C:\Program Files\Microsoft Security Client"==""
(
echo "Already Installed"
)
else
(
"\192.168.1.104\Programs\Microsoft Security Essentials\Microsoft Security Essentials.exe" /s /runwgacheck
)
IF NOT "C:\Program Files (x86)\Adobe\Reader 10.0"==""
(
echo "Already Installed"
)
else
(
"\192.168.1.104\Programs\Adobe Reader\AdbeRdr1012_en_US.exe" /sAll /rs /msi EULA_ACCEPT=YES
)
Mas isso não funciona. Como eu poderia conseguir isso?
Você precisa de IF EXIST
em vez de apenas IF
para a programação em lote.
por exemplo,
IF NOT EXIST "C:\Program Files\Microsoft Security Client" (
:: Install product
)
Como você está executando o AD, por que não tenta distribuir esses produtos via MSI e GPO?
Faça com que seu script solte um sinalizador, crie um arquivo de texto ou algo assim, quando a instalação concluir que o script será procurado nas execuções subsequentes. Se encontrar o sinalizador, ele finalizará o processo e não será reinstalado. Se o sinalizador não existir, conclui a instalação.
Para testar se existe um diretório para testar a presença do arquivo "nul". Isso funcionará nos scripts BAT e CMD em QUALQUER versão do Windows.
Apenas o teste da própria pasta geralmente falha, especialmente se a pasta estiver em uma unidade de rede ou acessada pelo caminho UNC.
Assim:
if exists c:\somedir\nul (
echo folder somedir exists in c:\
)
Você também pode usar o truque para ver se uma letra de unidade está em uso ou não. Por exemplo, se existir z: \ nul retornará true se z: estiver mapeado em uma unidade de rede ou se for uma unidade de DVD, mesmo que não haja nenhum disco na unidade.
Em 2015, confira alguns PowerShell.
if (!(Test-Path -Path "$Env:ProgramFiles\Microsoft Security Client" )) {
Write-Host "Not Installed, Installing..." iex "\192.168.1.104\Programs\Microsoft Security Essentials\Microsoft Security Essentials.exe /s /runwgacheck"
}
if (!(Test-Path -Path "${Env:ProgramFiles(x86)}\Adobe\Reader 10.0" )) {
Write-Host "Not Installed, Installing..." iex "\192.168.1.104\Programs\Adobe Reader\AdbeRdr1012_en_US.exe /sAll /rs /msi EULA_ACCEPT=YES"
}