idefixgr
Goto Top

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

Content-Key: 112750

Url: https://administrator.de/contentid/112750

Printed on: May 7, 2024 at 10:05 o'clock

Member: erik87
erik87 Apr 10, 2009 at 13:50:48 (UTC)
Goto Top
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!