Batch Einfache IF EXIST Abfrage möchte nicht

Daniel61

Lieutenant
Dabei seit
Apr. 2011
Beiträge
935
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 ??
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
24.755
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
 

Daniel61

Lieutenant
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
935
Sie wird via GPO verteilt, auf ca. 100 Maschinen, wär doch quatschig?!
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
24.755
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
 

Daniel61

Lieutenant
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
935
Die Datei verteil ich garnicht. Die wird aufgerufen via Startscript, die batch selber liegt auf dem Server.
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
24.755
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
 

Daniel61

Lieutenant
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
935
Noch nicht, eben weil es ja so einfach ist ;) aber ich probier das mal
 

Helibob

Lieutenant
Dabei seit
Juni 2012
Beiträge
700
Wenn die Datei nicht gefunden wird, setz sie mal in Anführungszeichen.
 

Daniel61

Lieutenant
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
935
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?
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
24.755
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:

Helibob

Lieutenant
Dabei seit
Juni 2012
Beiträge
700
Schalte mal zum Testen Echo ON

Edit: Manchmal sieht man vor lauter Bäume, den Wald nicht :rolleyes:.
 

firexs

Admiral
Dabei seit
Nov. 2003
Beiträge
9.749
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:

Daniel61

Lieutenant
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
935
@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!
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
24.755
Hi,

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

VG,
Mad
 

Entilzha

Lt. Commander
Dabei seit
Feb. 2010
Beiträge
1.243
wie wäre es mit:
Code:
IF EXIST "C:\log\java7_13_log.txt" (
echo exists
) ELSE (
echo does not exist
)
 
Top