Program bat instalujący 2 programy


(--MNICH--) #1

Witam, Muszę napisać prosty program do użytku na codzień, który sprawdzałby (przynajmniej narazie) czy są zainstalowane 2 programy, załóżmy Office 2003 i Adobe Reader 10. Gdyby któryś z nich nie był zainstalowany w systemie - ma być możliwość zainstalowania go tym plikiem (podane ścieżki instalacyjne do plików 1 i 2.txt na dysku c są przykładowymi do testowania). Ten, który podaje poniżej prawidłowo sprawdza i wyświetla czy te 2 programy są zainstalowane, ale nie potrafi już zainstalować jakiegokolwiek z nich jeśli go brakuje lub jeśli zmienię ścieżke.

Co w nim jest źle?

@echo off

cls

echo Sprawdzam MS Office...

if exist "%PROGRAMFILES%\Microsoft Office\OFFICE11\WINWORD.exe"goto tak1

if not exist "%PROGRAMFILES%\Microsoft Office\OFFICE11\WINWORD.exe" goto nie1

:tak1

echo Microsoft Office 2003 juz jest!

set instalacja1="n"

pause

goto program2

:nie1

echo Nalezy zainstalowac Microsoft Office 2003!

set instalacja1="t"

pause

goto program2


:program2

echo Sprawdzam Adobe Reader...

if exist "%PROGRAMFILES%\Adobe\Reader 10.0\Reader\AcroRd32.exe" goto tak2

if not exist "%PROGRAMFILES%\Adobe\Reader 10.0\Reader\AcroRd32.exe" goto nie2

:tak2

echo Adobe Reader juz jest!

set 2="n"

pause

goto war1

:nie2

echo Nalezy zainstalowac Adobe Reader!

set 2="t"

pause

goto war1

:war1

if "%1"=="t" goto 3

if "%1"=="n" goto war2

goto war2

:3

echo Wloz plyte z MS Office 2003, a nastepnie wcisnij dowolny klawisz...

pause

c:\1.txt

goto war2

:war2

if "%2"=="t" goto 4

if "%2"=="n" goto koniec

goto koniec

:4

echo Instalacja Adobe Reader

c:\2.txt

goto koniec

:koniec

cls

echo Pomyslnie zainstalowano wszystkie programy!

pause

(floyd) #2

Co to za wpisy: "c:\1.txt" i "c:\2.txt" ?

W ich miejsce należy podać linki do programów instalacyjnych i uruchomić je.

Czyli coś w stylu:

Start c:\setup.exe

lub np. przejść do katalogu w którym znajduje się plik instalacyjny instrukcją: cd

cd c:\program files\program instalacyjny

i uruchomić program instalacyjny np. o nazwie setup.exe znajdujący się w tym katalogu

start setup.exe


(--MNICH--) #3

Te ścieżki do plików 1 i 2.txt wpisałem jako tymczasowe ścieżki do instalatorów, aby łatwiej było sprawdzić czy plik działa. Próbowałem podawać tam lokalizację do plików exe, ale również nie działa, czyli np. jeśli brakuje Adobe to bat przechodzi i tak do końca, czyli "pomyślnie zainstalowano wszystkie programy" (ale wyświetla wcześniej że brakuje Adobe), a powinien wtedy uruchomić w tym przypadku plik 2.txt.

Nie wiem czy ten warunek IF powinien być tak zapisany, chodzi o te procenty i generalnie całą składnię, bo wygląda jakby tego nie sprawdzał. A jeśli próbowałem na instalację jednego programu np. tylko Office to wszystko działało, ale wtedy było to napisane bez IF.


(Drobok) #4
  1. [*:2fqpthcm]W innych językach nie można nazwy zmiennej zacząć od cyfry (tutaj raczej też)

(--MNICH--) #5

Dzięki wielkie za pomoc! Bardzo pomogliście mi. Wreszcie udało mi sie dojść do rozwiązania :slight_smile:

Błędem oprócz tych co napisać drobok (wiele razy zmieniałem te nazwy zmiennych i potem już sie troche pogubiłem) było podawanie w warunku if "%zmienna%"=="costam" zamiast if %zmienna%=="costam", czyli ten cudzysłów robił sprawę. Teraz działa prawidłowo.

Naprawde wielkie dzięki za poświęcony czas.

Teraz tlyko udoskonalę to ostatecznie, podam prawidłowe ścieżki instalatorów, dodam więcej programów oraz przygotuje ten plik nie tylko pod system XP.

Pozdrawiam