Batchscript zur Installation mehrerer Programme
Hallo, ich möchte per batch-script mehrere Programme vollautomatisch und ohne userinteraktion installieren. (Java, MySQL Community Server sowie eine Softwarelösung der Firma Prodress).
Ich kann euch zwar eine MS Domäne hochziehen aber vom programmieren habe ich wenig Ahnung. Deshalb habe ich das Meiste aus diversen Internetquellen zusammengesammelt.
Die entsprechenden Installationsdateien liegen zusammen mit dem Script in einem Ordner.
Wenn ich nun die Installation ausführen will per rechtsklick und ausführen als Admin, so sehe ich folgende Fehlermeldungen im cmd Fenster (und einen "Fehler" gleich doppelt):
-Der Befehl "else" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
-Der Befehl ""C:\Users\Prodata_User\Desktop\prodress mobil\install.bat"\" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
Diese "Fehlermeldung" bekomme ich insgesamt 5 Mal , die Installation läuft aber dennoch durch!? Gibt es eine Möglichkeit diese Fehler abzustellen bzw "unsichtbar" zu machen so dass der Anwender sie nicht sieht?
Als zusätliche Aufgabenstellung habe ich noch bekommen:
Programme sollen nur installiert werden wenn sie noch nicht installiert sind bzw nicht up2date, wie frage ich das ab?
REM Hier wird überprüft ob das Programm als Admin ausgeführt wird
@echo off
fsutil fsinfo drives %2>NuL
IF %errorlevel% equ 1 goto NOADMIN
else goto START
:START
REM Hier wird Java im passiven Modus installiert, die Zeilen vorher werden benötigt da man ja nicht
REM weiss wo der Anwender nachher den Ordner speichert und die msi sonst nicht gefunden werden kann. REM Passive ist ein Schalter der bei .msi Installationen genutzt werden kann.
%0\
cd %0\..
cd /d %0\..
start /wait "" jre1.7.0_09.msi /passive
REM Hier wird Prodress im stillen Modus installiert, die Zeilen vorher werden benötigt da man ja nicht
REM weiss wo der Anwender nachher den Ordner speichert und die exe sonst nicht gefunden werden kann.
REM Dir gibt den Installationspfad an. In diesem Fall sind passive und dir Schalter von inno setup.
%0\
cd %0\..
cd /d %0\..
start /wait "" Prodress@Net_Server.exe /silent /sp- /DIR=C:\progra~1\Prodress@Net_Server
REM Hier wird MySQL im passiven Modus installiert, die Zeilen vorher werden benötigt da man ja nicht
REM weiss wo der Anwender nachher den Ordner speichert und die jre1...msi sonst nicht gefunden werden REM kann. Passive ist ein Schalter der bei .msi installationen genutzt werden kann.
%0\
cd %0\..
cd /d %0\..
start /wait "" mysql-5.5.28-win32.msi /passive
REM Da bei einer passiven Installation von MySQL keine My.ini geschrieben wird muss diese noch in das
REM entsprechende Verzeichnis kopiert werden. Da man allerdings nicht weiss ob der Anwender die
REM Installation auf einem 32 oder 64 bit System ausführt sind für beide fälle Kopierbefehle
REM vorhanden. Die my.ini welche kopiert wird liegt im selben Ordner wie das Script.
REM /r /y /q sind Schalter von xcopy
%0\
cd %0\..
cd /d %0\..
xcopy "%cd%\my.ini" "C:\Program Files (x86)\MySQL\MySQL Server 5.5" /r /y /q
REM Dies ist der Part fürs kopieren der my.ini in einem 32 Bit Betriebssystem.
%0\
cd %0\..
cd /d %0\..
xcopy "%cd%\my.ini" "C:\Program Files\MySQL\MySQL Server 5.5" /r /y /q
exit
:NOADMIN
echo Please run this program as administrator!
pause
@echo off
fsutil fsinfo drives %2>NuL
IF %errorlevel% equ 1 goto NOADMIN
else goto START
:START
REM Hier wird Java im passiven Modus installiert, die Zeilen vorher werden benötigt da man ja nicht
REM weiss wo der Anwender nachher den Ordner speichert und die msi sonst nicht gefunden werden kann. REM Passive ist ein Schalter der bei .msi Installationen genutzt werden kann.
%0\
cd %0\..
cd /d %0\..
start /wait "" jre1.7.0_09.msi /passive
REM Hier wird Prodress im stillen Modus installiert, die Zeilen vorher werden benötigt da man ja nicht
REM weiss wo der Anwender nachher den Ordner speichert und die exe sonst nicht gefunden werden kann.
REM Dir gibt den Installationspfad an. In diesem Fall sind passive und dir Schalter von inno setup.
%0\
cd %0\..
cd /d %0\..
start /wait "" Prodress@Net_Server.exe /silent /sp- /DIR=C:\progra~1\Prodress@Net_Server
REM Hier wird MySQL im passiven Modus installiert, die Zeilen vorher werden benötigt da man ja nicht
REM weiss wo der Anwender nachher den Ordner speichert und die jre1...msi sonst nicht gefunden werden REM kann. Passive ist ein Schalter der bei .msi installationen genutzt werden kann.
%0\
cd %0\..
cd /d %0\..
start /wait "" mysql-5.5.28-win32.msi /passive
REM Da bei einer passiven Installation von MySQL keine My.ini geschrieben wird muss diese noch in das
REM entsprechende Verzeichnis kopiert werden. Da man allerdings nicht weiss ob der Anwender die
REM Installation auf einem 32 oder 64 bit System ausführt sind für beide fälle Kopierbefehle
REM vorhanden. Die my.ini welche kopiert wird liegt im selben Ordner wie das Script.
REM /r /y /q sind Schalter von xcopy
%0\
cd %0\..
cd /d %0\..
xcopy "%cd%\my.ini" "C:\Program Files (x86)\MySQL\MySQL Server 5.5" /r /y /q
REM Dies ist der Part fürs kopieren der my.ini in einem 32 Bit Betriebssystem.
%0\
cd %0\..
cd /d %0\..
xcopy "%cd%\my.ini" "C:\Program Files\MySQL\MySQL Server 5.5" /r /y /q
exit
:NOADMIN
echo Please run this program as administrator!
pause
Please also mark the comments that contributed to the solution of the article
Content-Key: 196019
Url: https://administrator.de/contentid/196019
Printed on: April 20, 2024 at 08:04 o'clock
6 Comments
Latest comment
Hallo simonSayz,
zur Fehlermeldung mit "else": Du hast einen Syntax-Fehler.
Richtig wäre:
Was mir hier nicht ganz einleuchtet, ist, warum du alle Laufwerke auflisten lässt.
Die Fehlermeldung kannst du unterdrücken, wenn du hinter die Kopierbefehle " > nul" schreibst. Auch wenn das Unterdrücken sicherlich nicht die beste Lösung ist.
MfG
Batch-Lord
zur Fehlermeldung mit "else": Du hast einen Syntax-Fehler.
Richtig wäre:
@echo off
fsutil fsinfo drives %2>NuL
if %errorlevel%==1 (
echo Please run this program as Administrator!
pause > nul
exit
) else (
goto START
)
Was mir hier nicht ganz einleuchtet, ist, warum du alle Laufwerke auflisten lässt.
Die Fehlermeldung kannst du unterdrücken, wenn du hinter die Kopierbefehle " > nul" schreibst. Auch wenn das Unterdrücken sicherlich nicht die beste Lösung ist.
MfG
Batch-Lord
@ Batch-Lord
- die Ausgabe der Laufwerke ist uninteressant, aber da "
@ simonSayz
Von
ist nur die letzte Zeile sinnvoll (und auch die nur ein einziges Mal vor der ersten Programminstallation), die ersten beiden kannst Du ersatzlos streichen ...
Grüße
bastla
Was mir hier nicht ganz einleuchtet, ist, warum du alle Laufwerke auflisten lässt.
Gemeint sein dürftefsutil fsinfo drives >nul 2>nul || goto :NOADMIN
fsutil
" mit Adminrechten ausgeführt werden muss, lässt ein Errorlevel <> 0 darauf schließen, dass der Batch nicht als Admin ausgeführt wurde.@ simonSayz
Von
%0\
cd %0\..
cd /d "%~f0\.."
Grüße
bastla
Hallo simonSayz!
Um aber doch auch zu antworten: Ist nur eine genauere Schreibweise (insbesondere berücksichtigen die Anführungszeichen die Möglichkeit, dass sich im Pfad Leerzeichen befinden) ...
Grüße
bastla
Ist das ein "schreibfehler" oder ein anderer befehl?
Gegenfrage: Was hat Dein Test dazu ergeben? Um aber doch auch zu antworten: Ist nur eine genauere Schreibweise (insbesondere berücksichtigen die Anführungszeichen die Möglichkeit, dass sich im Pfad Leerzeichen befinden) ...
Grüße
bastla