Batchprogrammierung Überwachung einer Datei und Start von anderen Programmen
Batchprogrammierung: Überwachung von Dateien in Abhängigkeit davon:
Start von Programmen
Umbenennung von Dateien
Restart von umbenannten Programmen
Hallo alle zusammen ich bin Neuling bzgl. Batchprogrammierung und habe fogendes Anliegen/Problem:
Von einem Rechenprogramm wird ein Lock-file (*.lck) erstellt, solange das Programm noch aktiv ist. Neben diesem Lockfile werden
diverse Ergebnisdateien von dem Rechneprogramm erstellt. Ich habe
in C ein Auswertungsprogramm geschrieben, welches auf die Ergebnisfiles zugreifen kann und diese in von
mir erwuenschte Form umschreibt.
Das oben erwähnte Lock-file wird vom Rechenprogramm nach Beendigung der Rechnung wieder gelöscht
Ich moechte jetzt den Vorgang automatisieren und zwar per Batch-Programmierung. Das Rechenprogramm kann ich per call-Befehl starten.
Das Auswertungsprogramm soll jetzt automatisch starten, wenn die Rechnung beendet ist. Folgende Fragen habe ich deshalb:
1.)
Wie kann ich das Vorhandensein der .Lck-Datei überwachen, so dass ich nach dessen Löschung automatisch das Auswertungsprogramm starte?
Der Name der Ergebnisdatei ist bekannt, muesste aber wohl im Verlaufe der Bachtprogrammes diesem uebergeben werden.
2.)
Wie wuerde das z.B. per externer TXT-Datei funktionieren?
Das Rechenprogramm liest seine Daten von einer externen Datei ein (*.INP). Bei einem automatisierten restart ohne Namensänderung würden die alten Dateien überschrieben.
Um also z.B. mehrere Zyklen Rechnen zu können, ohne dass die alten Dateien verlorengehen, müssen diese vor dem Neustart umbenannt bzw. in eine andere Datei kopiert werden.
3.) Wie kann ich deshalb die Input-Dateien nach Beendigung des Auswertungsprogrammes kopieren, nach Möglichkeit mittels eines Zählindexes, also ALT.inp ==> ALT1.inp, so dass der zweite Rechenzyklus mit der Datei ALT1.inp gestartet wird?
Praktisch waere es, die Anzahl der Wiederholzyklen in dem Bachtfile ebenfalls zu hinterlegen bzw. extern einzulesen.
ciao IdefixGR
ZUSATZ: 02.04.2009:
Mit Teilloesungen waere mir auch schon geholfen.
ciao IdefixGR
Start von Programmen
Umbenennung von Dateien
Restart von umbenannten Programmen
Hallo alle zusammen ich bin Neuling bzgl. Batchprogrammierung und habe fogendes Anliegen/Problem:
Von einem Rechenprogramm wird ein Lock-file (*.lck) erstellt, solange das Programm noch aktiv ist. Neben diesem Lockfile werden
diverse Ergebnisdateien von dem Rechneprogramm erstellt. Ich habe
in C ein Auswertungsprogramm geschrieben, welches auf die Ergebnisfiles zugreifen kann und diese in von
mir erwuenschte Form umschreibt.
Das oben erwähnte Lock-file wird vom Rechenprogramm nach Beendigung der Rechnung wieder gelöscht
Ich moechte jetzt den Vorgang automatisieren und zwar per Batch-Programmierung. Das Rechenprogramm kann ich per call-Befehl starten.
Das Auswertungsprogramm soll jetzt automatisch starten, wenn die Rechnung beendet ist. Folgende Fragen habe ich deshalb:
1.)
Wie kann ich das Vorhandensein der .Lck-Datei überwachen, so dass ich nach dessen Löschung automatisch das Auswertungsprogramm starte?
Der Name der Ergebnisdatei ist bekannt, muesste aber wohl im Verlaufe der Bachtprogrammes diesem uebergeben werden.
2.)
Wie wuerde das z.B. per externer TXT-Datei funktionieren?
Das Rechenprogramm liest seine Daten von einer externen Datei ein (*.INP). Bei einem automatisierten restart ohne Namensänderung würden die alten Dateien überschrieben.
Um also z.B. mehrere Zyklen Rechnen zu können, ohne dass die alten Dateien verlorengehen, müssen diese vor dem Neustart umbenannt bzw. in eine andere Datei kopiert werden.
3.) Wie kann ich deshalb die Input-Dateien nach Beendigung des Auswertungsprogrammes kopieren, nach Möglichkeit mittels eines Zählindexes, also ALT.inp ==> ALT1.inp, so dass der zweite Rechenzyklus mit der Datei ALT1.inp gestartet wird?
Praktisch waere es, die Anzahl der Wiederholzyklen in dem Bachtfile ebenfalls zu hinterlegen bzw. extern einzulesen.
ciao IdefixGR
ZUSATZ: 02.04.2009:
Mit Teilloesungen waere mir auch schon geholfen.
ciao IdefixGR
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 112750
Url: https://administrator.de/contentid/112750
Ausgedruckt am: 17.11.2024 um 03:11 Uhr
1 Kommentar
hallo IdefixGR,
zu 1.
dies würde ich mit einer goto-schleife realisieren, die überprüfung der datei mit dem befehl "if exist"
@echo off
cls
set pfad="..pfad+dateiname+endung.."
:exist
if exist %pfad% goto run
goto exist
:run
start "C:\Dat\auswertungsprogramm.exe"
zu 2.
wenn du den name immer in der ersten zeile stehen hast liest du die datei mit einer for-schleife aus
for /f %%a in ("C:\test\name.txt") do set name=%%a
zu 3.
da sieht die sache schon etwas schwieriger aus. du musst quasi den namen einlesen, die letzten vier stellen trennen ne laufende nummer rein und dann wieder ran.. das könnte so aussehen:
angenommen die "inp"-datei liegt in c:\Dat\" dann wird sie so ausgelesen
set anz=1
for %%b in ("C:\Dat\*.inp") do (set tem=%%b) && (call namcut)
nun wir der pfad + dateiname in die variable tem geschrieben und wir können das für jede datei unter der sprungmarke
"namcut" bearbeiten
jetzt müssen wir die tem-variable vom ordnerpfad und der endung trennen. in meinem beispiel is der pfad "C:\DAT\" also 7 zeichen lang. dann muss noch ne laufnummer ran die in der variablen anz liegt und dazu wieder die endung.
:namcut
set datnam=%tem:~7,4%%anz%.inp
dann noch anz erhöhen und zum ende der datei mit "goto eof" springen.
das programm könnte dann folgendermaßen aussehen:
@echo off
cls
set anz=1
for %%b in ("C:\Dat\*.inp") do (set tem=%%b) && (call namcut)
goto weiter
:namcut
set datnam=%tem:~7,4%%anz%.inp
set /a anz=anz+1
goto :eof
:weiter
ich hoffe das hilft dir weiter. es schadet auch nicht mal die cmd zu starten und dort "if /?" und "for /?" einzugeben
mir iss grad noch nen kleiner fehler aufgefallen, habsch mal korrigiert... schönen samstag noch!
zu 1.
dies würde ich mit einer goto-schleife realisieren, die überprüfung der datei mit dem befehl "if exist"
@echo off
cls
set pfad="..pfad+dateiname+endung.."
:exist
if exist %pfad% goto run
goto exist
:run
start "C:\Dat\auswertungsprogramm.exe"
zu 2.
wenn du den name immer in der ersten zeile stehen hast liest du die datei mit einer for-schleife aus
for /f %%a in ("C:\test\name.txt") do set name=%%a
zu 3.
da sieht die sache schon etwas schwieriger aus. du musst quasi den namen einlesen, die letzten vier stellen trennen ne laufende nummer rein und dann wieder ran.. das könnte so aussehen:
angenommen die "inp"-datei liegt in c:\Dat\" dann wird sie so ausgelesen
set anz=1
for %%b in ("C:\Dat\*.inp") do (set tem=%%b) && (call namcut)
nun wir der pfad + dateiname in die variable tem geschrieben und wir können das für jede datei unter der sprungmarke
"namcut" bearbeiten
jetzt müssen wir die tem-variable vom ordnerpfad und der endung trennen. in meinem beispiel is der pfad "C:\DAT\" also 7 zeichen lang. dann muss noch ne laufnummer ran die in der variablen anz liegt und dazu wieder die endung.
:namcut
set datnam=%tem:~7,4%%anz%.inp
dann noch anz erhöhen und zum ende der datei mit "goto eof" springen.
das programm könnte dann folgendermaßen aussehen:
@echo off
cls
set anz=1
for %%b in ("C:\Dat\*.inp") do (set tem=%%b) && (call namcut)
goto weiter
:namcut
set datnam=%tem:~7,4%%anz%.inp
set /a anz=anz+1
goto :eof
:weiter
ich hoffe das hilft dir weiter. es schadet auch nicht mal die cmd zu starten und dort "if /?" und "for /?" einzugeben
mir iss grad noch nen kleiner fehler aufgefallen, habsch mal korrigiert... schönen samstag noch!