Batch Einfache IF EXIST Abfrage möchte nicht

disco dogg

Lieutenant
Registriert
Apr. 2011
Beiträge
966
Hi,

ich hab heute ein mini Installscript geschrieben für die Verteilung via GPO. Es funktioniert ansich, allerdings muss ich verhindern, dass das Script bei jedem PC Start das Programm neuinstalliert.

Da ich eh n Logfile erstelle, dachte ich mir dass ich einfach auf das vorhanden sein des Logfiles prüfe.

Im Code sieht das so aus:

Code:
@echo off
IF EXIST C:\log\java7_13_log.txt GOTO ende else install

:install
md C:\log

msiexec /i "\\xxx-berlin.de\SysVol\xxx-berlin.de\Policies\{17310AA2-2D6C-4145-8D61-9D636793B9B5}\Machine\Scripts\Startup\jre1.7.0_13.msi" /qn /L* C:\log\java7_13_log.txt

REM Update ausschalten

reg add "HKLM\SOFTWARE\JavaSoft\Java Update\Policy" /v EnableJavaUpdate /t REG_DWORD /d 00000000 /f
reg add "HKLM\SOFTWARE\JavaSoft\Java Update\Policy" /v NotifyDownload /t REG_DWORD /d 00000000 /f

:ende
exit

Die Sprungmarken werden komplett übersprungen, das Script läuft einfach von neuem los und installiert munter weiter, egal ob Java schon da ist oder nicht.

Bin leider kein Batchprofi, was mach ich hier falsch ??
 
Hi,

wieso nicht einfach nach dem installieren die Batch selbst löschen? Macht doch wenig sinn sie immer wieder auszuführen. Wenn sie ausgeführt wurde dann einfach sich selbst löschen lassen?

VG,
Mad
 
Sie wird via GPO verteilt, auf ca. 100 Maschinen, wär doch quatschig?!
 
Hi,

du verteilst die Datei auf die einzelnen Maschinen, ist das soweit korrekt? Also die Datei wird auf jedem Rechner lokal ausgeführt, oder? Oder läuft es anders?

VG,
Mad
 
Die Datei verteil ich garnicht. Die wird aufgerufen via Startscript, die batch selber liegt auf dem Server.
 
Hi,

ok, das ist natürlich was anderes :)

An sich sieht der Code auf den ersten Blick gut aus. Hast du mal mit einfacheren Sachen getestet? Einfach "Gibt es die Log-Datei, wenn ja dann echo "gibts" wenn nein dann echo "gibts nicht""?

Sowas wie hier. Einfach mal schauen ob die Datei überhaupt gefunden wird :)

VG,
Mad
 
Noch nicht, eben weil es ja so einfach ist ;) aber ich probier das mal
 
Wenn die Datei nicht gefunden wird, setz sie mal in Anführungszeichen.
 
Code:
@echo off

IF EXIST C:\log\java7_13_log.txt GOTO JA ELSE NEIN

:JA
echo Ja ist da!

:NEIN

echo Nein ist nicht da!

pause

Ergebnis:

ifexist.jpg


:D?
 
Hi,

also da ist mir schon klar was ist :D

Code:
 @echo off
     
IF EXIST C:\log\java7_13_log.txt GOTO JA ELSE NEIN
     
:JA
echo Ja ist da!
[B]goto END[/B]

:NEIN  
echo Nein ist nicht da!
[B]goto END[/B]

:END
 pause

Bzw meine Version die ich getestet hab:

Code:
@echo off
if exist C:\blabla.txt goto JA
goto NEIN

:JA
echo Ja
goto DONE
:NEIN
echo Nein
goto DONE
:DONE
pause

VG,
Mad
 
Zuletzt bearbeitet:
Schalte mal zum Testen Echo ON

Edit: Manchmal sieht man vor lauter Bäume, den Wald nicht :rolleyes:.
 
Die Batch geht halt weiter. Dh. nach "echo Ja ist da!" fehlt ein goto ENDE

und das :ENDE gehört dann anstatt der pause rein.

und zu dem oberen script: wird die log.txt erstellt?

wenn ja schreib mal die IF abfrage um in:
IF NOT EXIST "C:\log\java7_13_log.txt" GOTO INSTALL
GOTO ENDE

dh. wenn sie existiert, wird IF ignoriert und das nächste wäre der Sprung zum Ende.

lg
fire

edit:
@echo off
IF NOT EXIST "C:\log.txt" GOTO NEIN

:JA
echo Ja ist da!
goto END

:NEIN
echo Nein ist nicht da!
goto END

:END
pause
das funktioniert bei mir. beides richtig, jenachdem ob ich eine log.txt auf c: habe oder auch nicht.
 
Zuletzt bearbeitet:
@madman: achso:D danke, jetzt klappts!


@firexs:

log datei wird via msiexec schalter erstellt /L* C:\log\logdatei.txt

Ich bastel da noch was rum.

Danke euch!
 
Hi,

wenn du magst poste doch das "Endergebnis" auch noch, der nächste Fragende dankt es dir :)

VG,
Mad
 
wie wäre es mit:
Code:
IF EXIST "C:\log\java7_13_log.txt" (
echo exists
) ELSE (
echo does not exist
)
 
Zurück
Oben