Frankenheimer Geschrieben 19. Mai 2008 Teilen Geschrieben 19. Mai 2008 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Seppel82 Geschrieben 19. Mai 2008 Teilen Geschrieben 19. Mai 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Frankenheimer Geschrieben 19. Mai 2008 Autor Teilen Geschrieben 19. Mai 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 19. Mai 2008 Teilen Geschrieben 19. Mai 2008 ein WSH-script kommt nicht in frage, muss das CMD sein? s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crash2001 Geschrieben 19. Mai 2008 Teilen Geschrieben 19. Mai 2008 (bearbeitet) 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 19. Mai 2008 von Crash2001 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Frankenheimer Geschrieben 20. Mai 2008 Autor Teilen Geschrieben 20. Mai 2008 muss das CMD sein? leider ja. das ganze läuft als host-job. ich muss mich da natürlich etwas an die vorgegebene praxis halten. @Crash2001 dankeschön erstmal, ich werde das mal probieren. denke aber dass ich mit variablen arbeite, auch wenn die quell und zielordner in meinem fall fix sind. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crash2001 Geschrieben 20. Mai 2008 Teilen Geschrieben 20. Mai 2008 Kein Problem. Kannst dir ja sonst auch zwei Batch-Dateien machen. Eine mit festen Parametern ist und eine mit Variablen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.