Entwickler-Ecke
Sonstiges (Delphi) - Delphi Programm über Batch Datei "steuern"
Nicor - Do 01.09.05 13:42
Titel: Delphi Programm über Batch Datei "steuern"
Ich habe folgendes Problem:
Ich habe zur Aufgabe bekommen ein Programm zu schreiben das Dateien in einem Ordner einliest und die Dateinamen ändert (würd benötigt für ein Backupverfahren). Bis hierhin hab ich da auch kein Problem.
ABER
das ganze soll so ablaufen das das Nachts geschieht, d.h. eine Batch Datei wird aufgerufen und bekommt als Parameter den Ordnerpfad worauf mein Programm gestartet wird und "durchläuft"
Leider habe ich von Batch Dateien im Zusammenhang mit Delphi keine Erfahrung. Wie "verknüpfe" ich die Batch mit meinem Programm? Wie lauten die Befehle?Wie übergebe ich den Parameter (Ordnerpfad) aus der Batch an mein Programm? usw....
Es wäre sehr nett wenn jemand der sich da auskennt ein paar Hinweise für mich hätte.
Schon mal Dank im Vorraus
Mfg
Martin1966 - Do 01.09.05 13:50
Titel: Re: Delphi Programm über Batch Datei "steuern"
Hallo!
Es gibt jetzt zwei Dinge die du machen musst:
- Eine Batch-Datei erstellen. Einfach mit einem Texteditor eine Datei mit der Endung .bat anlegen und dort einfach folgendes einfügen:
- Außerdem musst deinen Anwendung den übergebenden Parameter (Ordner) auswerten. Das geht über die Funktion ParamStr (1).
Mehr ist nicht zu machen. ;-)
Lg Martin
Nicor - Fr 02.09.05 07:47
Ok dank dir schonmal für die Antwort :)
Erstens ist kein Problem^^
aber bei zweitens bin ich noch nicht so ganz auf dem richtigen Pfad:
meine Batch sieht jetz so aus:
C:\test ist das Verzeichniss in dem die Dateien gesucht und umbenannt werden sollen.
Mein "Test-Programm" sieht jetz so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.FormCreate(Sender: TObject); var test: string; begin test:=ParamStr(1); label1.caption:=test; end;
end. |
Also für test müsste da jetz der Pfad aus der Batch stehen (c:\test) es kommt jedoch nichts und wenn ich den ParamStr(0) setze bekomme ich den Pfad in dem mein Programm liegt.
Und wieder danke im Vorraus :)
LigH - Fr 02.09.05 08:08
Bevor es mit der Programmierung in Formularen losgeht, mach doch erst mal kleine Schritte: Erzeuge ein Consolen-Programm, z.B. mit folgendem Inhalt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| program ParamTest;
var ParCount, ParIdx: Integer; ParStr: String;
begin ParCount := ParamCount; if ParCount > 0 then for ParIdx := 1 to ParCount do begin ParStr := ParamStr(ParIdx); WriteLn('Parameter #', ParIdx, ' = ', ParStr) end else WriteLn('Fehler: Es wurden keine Parameter übergeben.') end. |
Das kannst du dann erst mal an der Kommandozeile direkt aufrufen, z.B. mit
Quelltext
1:
| ParamTest erster zweiter dritter |
Läuft das, kommt als nächstes der gleiche Aufruf in einer Batch-Datei.
In der IDE kann man es testen über "Start - Parameter" vor dem Ausführen. Da das Fenster danach aber sofort wieder schließen würde, solltest du da noch ein
ReadLn; als letzte Programmzeile einfügen.
___
Übrigens:
Den Inhalt von Komponenten schon während Form.OnCreate zu beeinflussen, hat nach meiner Erfahrung schon oft zu Problemen geführt. Ich musste normalerweise immer dafür sorgen, dass Komponenten auf einem Formular "verzögert" erst dann geändert wurden, wenn es fertig erstellt worden war. Dafür habe ich leider noch keine ideale Lösung gefunden - ein Timer erscheint mir dafür brauchbar, aber nicht ideal.
In deinem Fall allerdings würde ich auch beim Schreiben von Formular-Applikationen die Auswertung von Parametern in den Quelltext der Projektdatei (*.dpr) programmieren. Dafür kannst du nutzen: Menü "Projekt", Eintrag "Quelltext anzeigen". Denn dein Programm soll ja automatisch laufen. Und ehrlich gesagt: Eigentlich sind Konsolenprogramme für automatische Aufgaben gar nicht so schlecht. Man kann natürlich auch hübsche Fenster mit Fortschrittsanzeigen verwenden, selbstverständlich.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!