Zum Inhalt springen

Frage zum einem Batch-Job


Frankenheimer

Empfohlene Beiträge

Hallo

Man möge es mir verzeihen wenn es wirklich easy ist, aber ich stehe grade etwas aufm Schlauch.

Ich soll einen Batchjob erstellen der Dateien von einem Ordner in den nächsten verschiebt. Das ganze klingt ja noch relativ simpel, allerdings sollen da bestimmte sachen beraten werden.

Der Quellordner ist immer der gleiche, genauso der Zielordner.

im Quellordner laufen dateien auf.

ABC

ABC_RDY

BCD

BCD_RDY

CDE

CDE_RDY

DEF

nach diesem Muster. RDY deutet an, dass die übertragung per FTP Bereits erfolgt ist und erfolgreich war.

Jetzt soll ich die Dateien nur moven, wenn zur entsprechenden datei bereits ein RDY File vorliegt. Sobald dieses file gemoved wurde kann das RDY File gelöscht werden. Files die kein RDY File besitze sollen in ein logfile geschrieben werden.

Wie setze ich sowas um?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

erstmal vorweg. wenn du die Windowshilfe aufrufst (F1) findest du unter dem Punkt "Tools zum Anzeigen von Computerinformationen und Ermitteln von Fehlerursachen verwenden" die Befehlszeilenreferenz. Dort sind alle cmd Befehle beschrieben. (auch die for-Schleife sehr ausführlich)

zu deinem Problem: Überprüfe doch einfach mit if exist, ob die datei ABC_RDY existiert. Wenn ja, datei ABC moven und ABC_RDY löschen, wenn nein, den Dateinamen in eine Log-Datei schreiben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

zu deinem Problem: Überprüfe doch einfach mit if exist, ob die datei ABC_RDY existiert. Wenn ja, datei ABC moven und ABC_RDY löschen, wenn nein, den Dateinamen in eine Log-Datei schreiben.

es ist vielleicht ewas dämlich ausgedrückt. die namen abc usw. sind frei erfunden. die dateibezeichnungen sind kryptische werte die jedesmal unterschiedlich sind. heute ist es abc und abc_rdy, morgen ist es 1484583 und 1484583_rdy. das heisst, ich muss wahrscheinlich mit diesen tokens arbeiten, was ich ebenfalls nicht so recht auf die reihe bekomme.

mein aktueller status ist, dass ich momentan zwei txt listen erzeuge. ich filtere mit dir /b / *_rdy und mit invertiert /v alle NICHT rdy files raus. habe dann halt zwei tabellen.

nur wie vergleiche ich die vernünftig?

mit einer einfachen if exisits abfrage ist es leider nicht getan, ich muss ja schließlich zuvor alle in frage kommenden filetypen herausfiltern. ich könnte natürlich eine liste mit rdy files erstellen. im idealfall liegen also genausoviele rdy files wie normale files vor. im ungünstigsten fall aber eben weniger. wie soll ich das bewerkstelligen dass dieser job die rdy files schnappt, und das ganze quasi mit dem non rdy file vergleicht?

ich müsste quasi ineinander verschachtelte for schleifen bauen. und da stößt es mit meiner dos-kompetenz an die grenzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also wenn du eine Liste mit den Dateinamen hast, bei denen überprüft werden soll, ob sie auch mit "_rdy" hintendran existieren, geht das ganz einfach.

Nennen wir die Batch-Datei dafür einfach verschieben.bat


@echo OFF

for /F  %%a in (%1) do ( if exist %%a_rdy move %%a %2

del %%a_rdy

echo Datei %%a wurde nach %2 verschoben und Datei %%a_rdy gelöscht.)

%1 steht für den Dateinamen der Listendatei %2 steht für das Zielverzeichnis Aufgerufen wird es dann mit verschieben.bat [listendatei] [Zielverzeichnis]. Also beispielsweise mit
[i]verschieben.bat liste.list ./test[/i]

[edit]

Die echo-Zeile kann natürlich noch weggelassen werden. Ich finde sie aber praktisch, da man so sieht, welche Dateien wohin verschoben wurden (könnte man evtl auch in eine log-datei schreiben statt es am Bildschirm auszugeben).

Falls die Batchdatei direkt aus dem Ausführen-Feld ausgeführt wird, kann man noch ein pause ans Ende stellen, so dass man das Ergebnis sieht.

Wenn der Name der Listendatei und des Zielverzeichnisses immer gleich ist, kann dieses natürlich auch fest im Quelltext integriert werden (%1 und %2 durch die entsprechenden Werte ersetzen). Dann braucht man keine Parameter mehr übergeben. Die echo-Zeile müsste dann aber falls gewünscht auch angepasst werden, damit sie das richtige anzeigt.

[/edit]

Bearbeitet von Crash2001
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...