Я хочу установить некоторые программы с помощью сценария запуска, но как только он запустится в первый раз, он просто переустановит трату времени и перезапись. Это Server 2008 R2.
Где-то я нашел это
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
)
Но не работает. Как мне это добраться?
Тебе нужно IF EXIST
вместо просто IF
для пакетного программирования.
например
IF NOT EXIST "C:\Program Files\Microsoft Security Client" (
:: Install product
)
Поскольку вы используете AD, почему бы вам не попробовать распространять эти продукты через MSI и GPO?
Пусть ваш скрипт сбросит флаг, создаст текстовый файл или что-то в этом роде, когда установка завершится, что ваш скрипт будет искать при последующих запусках. Если он находит флаг, он завершает процесс и не переустанавливается. Если флаг не существует, установка завершается.
Чтобы проверить, существует ли каталог, проверьте наличие файла "nul". Это будет работать в сценариях BAT и CMD в ЛЮБОЙ версии Windows.
Простое тестирование самой папки часто не удается, особенно если папка находится на сетевом диске или доступна по пути UNC.
Как это:
if exists c:\somedir\nul (
echo folder somedir exists in c:\
)
Вы также можете использовать этот трюк, чтобы узнать, используется ли буква диска или нет. Например, если существует, z: \ nul вернет истину, если z: отображается на сетевом диске или если это DVD-привод, даже если в приводе нет диска.
2015 год, попробуйте 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"
}