simsa84
Goto Top

If befehle in einer Batch die andere Batch Dateien kontrollieren soll!

Brauch mal wieder Hilfe

Hallo,

Ich habe drei Batch Dateien. 2 werden in der ersten mit aufgerufen. Es geht um installation von Programmen und Drucker wechsel zweier Server.

Also die Batch Dateien funktionieren soweit und Logs werden im jeweiligen Ordner auch erstellt.
Jetzt möchte ich aber nicht das jedesmal wenn der User sich anmeldet das er diese installationen vornimmt. Ausser die Netzlaufwerke.

Das erreiche ich ja wenn ich mit einem If Satz abfrage ob jeweilige Logs vorhanden sind. Und wenn Logs vorhanden sind wird er die Installationen und Druckserver wechsel nicht durchführen außer die Logs sind weg dann Installiert und verschiiebt er wieder!

Habe hier schon etwas geschrieben und möchte das Ihr mir sagen könnt ob es soweit gut aussieht oder was man anders machen kann. Bin noch ein neuling auf dem Gebiet Scripting und Ich finde nichts wirklich helfendes im Netz.

Habe es an einem Testsystem probiert klappt aber noch nicht ganz. Freue mich wenn jemand was darüber weiß!

Also die eigentliche Bat sieht dann bei mir so aus:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@Echo on
Cls

REM *****Echo.
REM *****Echo Guten Tag %Username%
REM *****Echo Ihr Computer heisst %Computername%
REM *****Echo Sie melden sich am %Logonserver% an
REM *****Echo Ihre Domäne heisst %UserDomain%

REM *****Echo Einen Moment bitte, Ihre Netzlaufwerke werden jetzt verbunden

pushd \\Server\Ordner

logonSkript.vbs

If exist \\Server\Ordner\Printserver.log
 goto Vorhanden

:Vorhanden
@echo off ist Vorhanden
goto end

If not exist \\Server\Ordner\Printserver.log
  goto Error

:Error
@echo off Error
  goto \\Bat1

If exist \\Server\Ordner\Apfel.log
  goto Vorhanden

:Vorhanden
@echo off ist Vorhanden
  goto end

If not exist \\Server\Ordner\Apfel.log
  goto Error

:Error
@echo off Error
  goto \\Bat2

pushd \\Server\Printserver

call Printserver.bat

pushd \\Server\Apfel

call Apfel.bat



popd

End
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Bedanke mich im voraus schon mal für eure Antworten!!!!!!!!! ^^

Euer Simsa
Kommentar vom Moderator Biber am 02.11.2011 um 18:57:32 Uhr
Verschoben von "ööhmmm ...Windows??" nach "Batch & Shell"

Content-ID: 175645

Url: https://administrator.de/forum/if-befehle-in-einer-batch-die-andere-batch-dateien-kontrollieren-soll-175645.html

Ausgedruckt am: 23.12.2024 um 03:12 Uhr

Skyemugen
Skyemugen 02.11.2011 um 13:35:45 Uhr
Goto Top
Aloha,

bevor wir hier die Augenkrise bekommen, möchte ich dich doch bitten, unsere ##blue|##-Formatierung einzusetzen (geht auch nachträglich beim Bearbeiten) ...

Ebenso möchte ich dich darauf hinweisen, dass solche Anordnungen wie

If exist \\Server\Ordner\Printserver.loggoto Vorhanden

a) fehlerhaft sind und
b) if not exist erst gar nicht greifen würde, da ohne sinnvolles if exist ... (tu dies tu das) else (tu das oder dies) dann :Vorhanden direkt danach angesprochen wird ...

Mehr ins Detail gehe ich jetzt nicht (und schau' ich mir auch nicht an), solange alles im Plaintext vorhanden ist.

greetz André
P.S.: In deinem Satz
Bedanke mich im voraus schonmal für eure Beiträge!!!!!!!!!
stecken zwei Fehler ... (nein, ich spreche nicht von Rechtschreibung und/oder Grammatik)
60730
60730 02.11.2011 um 13:43:40 Uhr
Goto Top
moinsen,

@echo off ist Vorhanden

ist ja mal ein ganz neuer Ansatz...
André meinte wirklich code tags - nicht code plain...

Und wenn du dann bei edit ieren bist - wo ist nochmal das Problem versteckt?

Ich habe drei Batch Dateien. 2 davon laufen in einer.

Bevor ich ganz weglaufe o der mein feuchtes Brötchen zwischen den Ohren ausläuft...
Wo du wolle?

Gruß
Simsa84
Simsa84 02.11.2011 um 13:44:18 Uhr
Goto Top
So hoffe es ist jetzt genehm der Herr xD
Simsa84
Simsa84 02.11.2011 um 13:50:17 Uhr
Goto Top
Das sind halt Dinge die ich gefunden habe wie gesagt kenne mich noch nicht so gut aus aber Ich merke schon das ihr sehr Hilfsbereit seid.

Ich werde versuchen mich zu bessern!!!
Skyemugen
Skyemugen 02.11.2011 um 14:18:40 Uhr
Goto Top
Zitat von @Simsa84:
Das sind halt Dinge die ich gefunden habe wie gesagt kenne mich noch nicht so gut aus aber Ich merke schon das ihr sehr Hilfsbereit seid.
Brauchst du nix Internet, guckst du Hilfe von CMD face-wink

if /? sollte dir schon einmal Hinweise darauf geben, warum deine goto-Anordnungen fehlerhaft sind und auch teilweise eingekürzt werden können (z.B. if exist ... (echo Existiert bereits. && pause && goto :eof) else (call ...) ... Sprungmarken sollten, nebenbei bemerkt, eindeutig und daher nicht mehrfach vorhanden sein.
Ich werde versuchen mich zu bessern!!!
Mir genügt es schon, wenn du die CMD-Hilfe bemühst, learning-by-doing (gerne auch mit konkreten Nachfrage, wenn es hakt) ausübst und deine Ausrufezeichen sparsam verwendest.

Was genau soll goto \\Bat1 eigentlich bewirken? Du versuchst hier per Sprungmarkensprung ein Verzeichnis aufzurufen (?)

greetz André
Simsa84
Simsa84 03.11.2011 um 06:54:13 Uhr
Goto Top
Habe es gemacht und denke das mir diese Zeilen Helfen werden....

If not exist %Temp%\Printserver.log goto Call
  goto End

:Call
call Print.bat
goto End

:End
echo So könnts klappen ^^

Habe es getestet und es hat funktioniert und wenn ich es so Handhabe kann Ich mir den Else Befehl sparen.
Skyemugen
Skyemugen 03.11.2011 um 08:33:02 Uhr
Goto Top
Aloha ...

hm ...

Wozu denn für einmal call eine Sprungmarke aufrufen und dazu noch eine (überflüssige) Sprungmarke für's Ende, lässt sich doch alles viel schöner handhaben face-wink

greetz André
Simsa84
Simsa84 03.11.2011 um 10:37:43 Uhr
Goto Top
Ja wie gesagt bin da auf dem gebiet noch neu aber es geht und Ich bin Happy.

Der call ist halt dafür das wenn die Log nich da is, das er die Batch ausführt und wenn das Log da ist, er einfach gar nichts macht und direkt beendet.
Will ja nicht jedesmal beim User Login das Fenster aufhaben auch wenn der User davon nichts mitbekommt.

Falls dies auch kürzer geht und hübscher Ok aber so gehts auch!! ^^ Trotzdem Danke
Skyemugen
Skyemugen 03.11.2011 um 11:29:50 Uhr
Goto Top
... so kann man das nicht stehen lassen ^__^
@If not exist %Temp%\Printserver.log @call Print.bat
fertig aus, mehr muss da doch gar nicht ... if exist dann macht er eben nichts und die batch macht Feierabend, if not exist dann führt er es eben aus und macht auch automatisch Feierabend ...

und beim Testen haut man meist sowieso ein goto :eof als letzte Zeile, was bei Doppelklick oder Taskplanerausführung natürlich hier überflüssig wird

greetz André