Jump to content

suchen nach einem eintrag und bei erfolg starten einer datei


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen.

 

Hoffe das einer eine Lösung für mein Problem kennt.

 

habe eine batch datei erstellt die Dateien löscht und in einen Logfile reinschreibt das der löschvorgang erfolgreich ist.

 

Nun zum Problem:

Möchte gerne wenn die Dateien gelöscht wurden sind das eine andere batch datei ausgeführt wird.

Weiß jemand wie ich es hinkriege das die batch datei das logfile auf dem eintrag erfolgreich schaut und dann die nächste Datei startet.

 

Grund ist will einen prozess automatisieren der den Ordner löscht und dann ein skript startet das in diesen Ordner neue Dateien erstellt.

 

Das ist das Skript bis jetzt

 

set name=loeschen.log

set ordner=C:\temp\test\

Set LOG="C:\temp\%timest%_%name%"

date /T >> %LOG%

time /T >> %LOG%

 

REM ~~ Befehl zum löschen ~~

 

 

del %ordner%\*.* /q /s >> %LOG%

 

echo ----------------------------------------------------------------------------

echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

echo ----------------------------------------------------------------------------

 

REM ~~ Kontrolle ob löschen erfolgreich war ~~

 

set leer=1

FOR /F "delims=" %%i in ('dir /b %ordner%') do if not [%%i] equ [] set leer=0

REM Ausgabe in Logfile

if %leer% equ 1 (

echo %Date% %Time% %ordner%: Loeschen_erfolgreich_beendet.>>%LOG%

echo Loeschen_erfolgreich_beendet.

) else (

echo %Date% %Time% Loeschen_nicht_erfolgreich_beendet. >>%LOG%

echo Loeschen_nicht_erfolgreich_beendet.

)

Link zu diesem Kommentar

Moin chris.m,

 

ganz eindeutig finde ich Deine Problembeschreibung genau am Knackpunkt nicht:

* soll jetzt die vorhandene, oben gepostete Batchdatei irgendetwas Nächstes starten?

* oder soll eine zweite, eine vollkommen unabhängig gestartete, je nach Erfolg oder Misserfolg des Löschens nach links bzw. nach rects verzweigen?

 

Falls der erste Fall (erst der Lösch-Versuch, dann ggf. einen weiteren Prozess starten):

Das wäre einfach und dazu brauchst Du ja nicht erst ins Logfile schauen.

Hänge eine Aufruf in die unten vorhandene IF-Else-Klamotte.

 

Der zweite Fall ist so oder so Grütze... Wenn denn eine zweite Batchdatei nur dann ein Programm XY starten soll/darf, wenn die Ordner c:\temp\test\ und Unterordner alle leer sind, dann kann sie auch den Löschversuch selbst unternehmen.

 

Denn was immer im Logfile an "Erfolgen" stehen mag, kann ja der Stand vom 14. Frühling sein... und inzwischen sind wieder 28 TeraByte Daten drin.

 

Anyhow, wenn 2 unabhängige Skriptdateien zusammenarbeiten sollen, brauchst Du ZWEI Textdaten:

- eine mit einem Vereinbarten Namen, den beide Programme kennen und nutzen [%temp%\LastCleanupDate.txt".

Dort kann das Datei entweder den Namen der aktuellen Logdatei und das Datum als wiederfindbaren Wert hineinschreiben.

Und den Datums/Uhrzeitwert kann dann auch ein anders Skript suchen und finden.

 

Bsp. Batch A ermittelt, bevor er irgendetwas anderes anfasst, einen Zeitwert..

> Set "Startzeit=%date% %Time%"

..oder meinetwegen mit einer FOR-Anweisung ein wenig aufgehübscht im Format YYYYMMTT_hhmi.

Dieser Wert wird als neue Datei geschrieben mit

> echo %Startzeit%>%temp%\LastCleanUpDate.txt

Und eine Zeile angehängt:

> echo Skript gestartet>>%temp%\LastCleanUpDate.txt

 

 

Dann versucht die Skriptdatei A ihr Glück mit der Löscherei, kracht vielleicht weg oder kommt bis zum Ende.

Und falls sie zum Ende kommt, kann sie die Datei neu schreiben (1. Zeile wie oben, 2. Zeile "erfolgreich" wenn Erfolg; 1 Zeile wie oben, 2. Zeile "vergeigt" bei Fehler)

Falls sie "irregulär" beendet wurd, steht eben genau ein "Skript gestartet" drin und nix weiter.

 

Eine zweite, ausführliche Logdatei, in der Du z.B. die ausführlich beschriebenen Schritte aller Läufe dieses Jahres fortführst, hat auch ihren Sinn...wird aber für den eben beschriebenen Zweck nicht gebraucht.

 

Grüße

Biber

Link zu diesem Kommentar

hallo Biber,

 

der erste fall ist der den ich probiere zu erschaffen ;o)

 

wie gesagt er soll beim lösch erfolg deer dateien im Ordner eine neuen schritt. (datei aufrufen).

 

der 2fall wie du schon sagst wäre käse.

 

also du meinst so in der art oder?

 

if %leer% equ 1 call c:\.....\hallo.bat (

echo %Date% %Time% %ordner%: Loeschen_erfolgreich_beendet.>>%LOG%

echo Loeschen_erfolgreich_beendet.

) else (

echo %Date% %Time% Loeschen_nicht_erfolgreich_beendet. >>%LOG%

echo Loeschen_nicht_erfolgreich_beendet.

)

Link zu diesem Kommentar

Moin chris.m,

 

Jepp, ziemlich genau in der Art, wie Du es gepostest hast, meinte ich es:


if %leer% equ 1 (
echo %Date% %Time% %ordner%: Loeschen_erfolgreich_beendet.>>%LOG%
echo Loeschen_erfolgreich_beendet. Datei Hallo.bat wird gestartet...
call c:\.....\hallo.bat
) else (
echo %Date% %Time% Loeschen_nicht_erfolgreich_beendet. >>%LOG%
echo Loeschen_nicht_erfolgreich_beendet.
)
[/Code]

 

- oder - falls NACH der IF-Konstruktuktion kein weiterer Code mehr folgt

[Code]
if %leer% equ 1 (
echo %Date% %Time% %ordner%: Loeschen_erfolgreich_beendet.>>%LOG%
echo Loeschen_erfolgreich_beendet. Datei Hallo.bat wird gestartet...
c:\.....\hallo.bat
) else (
echo %Date% %Time% Loeschen_nicht_erfolgreich_beendet. >>%LOG%
echo Loeschen_nicht_erfolgreich_beendet.
)
[/Code]

 

Zusätzlich solltest Du aber, wenn ein weitere (Batch- oder whatever-) Datei beteiligt ist, an irgendeiner Stelle im Code auch prüfen:

[Code]
IF not Exist C:\....\Hallo.bat (echo Datei xxx fehlt... Gebe auf. ) && goto :eof
[/Code]

 

...oder irgendwie anders darauf reagieren.

 

Früße

Biber

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...