aschnack1
Goto Top

Batch Automatische Auswahl von erstelltem Ordner, nur wie?

Hallo zusammen,

Ich hänge grade an einer Batch fest und hoffe das ihr mir in meiner denk-Blockade helfen könnt:
Ausgangssituation:
Ein Programm erzeugt eine Backup-File. Da eine Automatische Einordnung nicht möglich ist, will ich die per Batch machen. Diese Einordnung soll folgender Regel folgen. Es gibt 4 unter-Ordner, für jede Woche einen. Beim start des skripts wird zunächst der Ordner mit dem alter von über 28 Tagen gelöscht, anschließend dieser neu erzeugt. Anschließend soll die Datei in den grade neu erstellten Ornder verschoben werden. und da hänge ich jetzt, ich weis nicht wie dem Copy-Befehl sage, das es den grade erzeugten Ordner als Ziel wählen soll.

Content-Key: 392320

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

Printed on: December 3, 2022 at 17:12 o'clock

Member: FireWALL
Solution FireWALL Nov 11, 2018 updated at 09:39:28 (UTC)
Goto Top
Moin.

An deiner Stelle würde ich es mir etwas einfacher machen: Soweit ich es verstehe, läuft dein Backup immer in den gleichen Ordner.
Von hier aus würde ich dann vier Copy-Jobs laufen lassen (jeden dabei nur jede vierte Woche, der Start der Jobs muss also um je eine Woche versetzt werden), welche direkt die Quelle in das Ziel spiegeln.
Damit hättest du eine feste Einplanung: In Woche 1 wird in "abc\1" gesichert, in Woche 2 startet der Copy-Job nach "abc\2" etc...

Grüße
Member: Pedant
Solution Pedant Nov 11, 2018 updated at 17:39:47 (UTC)
Goto Top
Hallo Aschnack1,

die simple Vorgehensweise, die FireWALL vorschlug ist vielleicht vorzuziehen, dennoch möchte ich Deine Frage beantworten.

Verwende "Kopieren" nicht als einfaches Sprungziel, sondern als Funktion.
Das geht indem Du statt goto Sprungziel zu verwenden call :Sprungziel Parameter verwendest.
(Den Doppelpunkt vor "Sprungziel" nicht vergessen)
So kannst Du dem Sprungziel (der Funktionen) den gewünschten Wert mitgeben.
Den Hauptcode musst Du zusätzlich mit exit /b oder goto :eof terminieren und Funktion(en) danach deklarieren.
Es muss dann call verwendet werden, was dazu führt, dass nach dem Funktionsaufruf die Ausführung zurückkehrt und mit der nächsten Zeile im Hauptcode weitermacht, was aber hier nicht gewünscht ist.
Um das Weitermachen zu verhindern (abzuwürgen) kannst Du ein goto fertig einsetzen.

Hier der ungestestete Code dazu:

Alternativ kannst Du Deinen Code im Prinzip belassen wie er ist, aber die Variable %ZIEL% schon in den Fallunterscheidungen belegen.
Das erscheint mir hier die einfachere und bessere Lösung zu sein, als die Verwendung einer Funktion.

Das könnte ungetestet so aussehen:


Noch ein allgemeiner Tipp:
Verwende generell keine Leerzeichen in den Bezeichnern der Sprungziele, denn sonst sind Bezeichner und Parameter schlecht auseinanderzuhalten.

Schlecht:

Besser:
Gruß Frank
Member: Aschnack1
Aschnack1 Nov 12, 2018 updated at 08:20:09 (UTC)
Goto Top
Vielen Dank für eure Lösungen, ich habe es jetzt erstmal wie @pendant vorgeschlagen, mit der Festlegung der %ZIEL% Variablen in der Wochen abfrage, gemacht. Ich hatte einfach die da die Denkblockade, ich finde ein Skript jede Woche laufen zu lassen einfach besser als 4 verschiedene Skripts zu haben und zu Prüfen im Fehlerfall.