Hallo erst mal, ich bin neu hier im Forum und hoffe ich bin hier richtig.
Ich suche schon seit einiger zeit nach einer Lösung und werde verrückt im Internet.
Grob gesagt:
Ich schreibe an einem kleinen Script zum Kopieren von Dateien auf diverse Netzwerkadressen.
Das läuft auch alles super, mit Auflistung, Fehlerangabe, Logdatei, Überprüfung..
Ich möchte jetzt gerne etwas "variabler" sein, was die zu kopierenden Dateien angeht.
Hierzu möchte ich angeben wie viele Dateien ich habe, und natürlich die Dateinamen und Zielpfade:
Dieser Teil muss jedes Mal per Hand bearbeitet werden, da sich Dateianzahl und Datei selbst ja ändert.
Die Dateien werden später per Robocopy kopiert (einzelne Dateien, da verschiedene Pfade notwendig).
(robocopy C:\ALT C:\NEU Datei.txt /XO /r:1 /w:1 /LOG+:C:\LOG.txt /v /NJS /TS)
Jetzt bräuchte ich eine Art Schleife, die ich für die Auflistung der Dateien, den Robocopy Befehl und die Überprüfung einrichten kann, damit ich jeweils nur einen Befehlt mit einer Variable habe, die dann natürlich hochgezählt wird.
Also etwas in der Art:
Das Problem ist, dass ich einen "variablen" Variablennamen habe und hier leider nur der String ausgegeben wird, der gebildet wird. Das ist total logisch. Aber ich möchte z.B. aus UPDATEDATEI%DATEIZAEHLER% nicht "UPDATEDATEI1" erhalten, sondern was im Ergebnis - %UPDATEDATEI1% enthalten ist haben. Dann wird hochgezählt und es geht weiter, bis zur Angabe der Dateianzahl oben.
Gibt es dafür eine Lösung, ich komm absolut nicht drauf. Es können auch gern externe "temporäre" Dateien angelegt und wieder ausgelesen werden..
Ich kann leider nur etwas cmd/bat ..
Sonst muss ich jedesmal die Anzeige, das Kopieren, die Überprüfung per Hand im kompletten Script kopieren/anpassen..
Viele Grüße
Ich suche schon seit einiger zeit nach einer Lösung und werde verrückt im Internet.
Grob gesagt:
Ich schreibe an einem kleinen Script zum Kopieren von Dateien auf diverse Netzwerkadressen.
Das läuft auch alles super, mit Auflistung, Fehlerangabe, Logdatei, Überprüfung..
Ich möchte jetzt gerne etwas "variabler" sein, was die zu kopierenden Dateien angeht.
Hierzu möchte ich angeben wie viele Dateien ich habe, und natürlich die Dateinamen und Zielpfade:
Code:
set /A DATEIANZAHL=5
set UPDATEDATEI1=datei1
set ZIELORDNER1=Ordner1\unterOrdner1
set UPDATEDATEI2=datei2
set ZIELORDNER2=Ordner2\unterOrdner2
set UPDATEDATEI3=datei3
set ZIELORDNER3=Ordner3\unterOrdner3
set UPDATEDATEI4=datei4
set ZIELORDNER4=Ordner4\unterOrdner4
Dieser Teil muss jedes Mal per Hand bearbeitet werden, da sich Dateianzahl und Datei selbst ja ändert.
Die Dateien werden später per Robocopy kopiert (einzelne Dateien, da verschiedene Pfade notwendig).
(robocopy C:\ALT C:\NEU Datei.txt /XO /r:1 /w:1 /LOG+:C:\LOG.txt /v /NJS /TS)
Jetzt bräuchte ich eine Art Schleife, die ich für die Auflistung der Dateien, den Robocopy Befehl und die Überprüfung einrichten kann, damit ich jeweils nur einen Befehlt mit einer Variable habe, die dann natürlich hochgezählt wird.
Also etwas in der Art:
Code:
:ZAEHLEN
set /A DATEIZAEHLER=0
set /A DATEIZAEHLER=%DATEIZAEHLER% +1
set UPDATEDATEI=UPDATEDATEI%DATEIZAEHLER%
set ZIELORDNER=ZIELORDNER%DATEIZAEHLER%
echo Datei %DATEIZAEHLER%: %UPDATEDATEI%
echo Ziel %DATEIZAEHLER%: %ZIELORDNER%
if %DATEIZAEHLER% GEQ %DATEIANZAHL% goto NEXT
goto ZAEHLEN
Das Problem ist, dass ich einen "variablen" Variablennamen habe und hier leider nur der String ausgegeben wird, der gebildet wird. Das ist total logisch. Aber ich möchte z.B. aus UPDATEDATEI%DATEIZAEHLER% nicht "UPDATEDATEI1" erhalten, sondern was im Ergebnis - %UPDATEDATEI1% enthalten ist haben. Dann wird hochgezählt und es geht weiter, bis zur Angabe der Dateianzahl oben.
Gibt es dafür eine Lösung, ich komm absolut nicht drauf. Es können auch gern externe "temporäre" Dateien angelegt und wieder ausgelesen werden..
Ich kann leider nur etwas cmd/bat ..
Sonst muss ich jedesmal die Anzeige, das Kopieren, die Überprüfung per Hand im kompletten Script kopieren/anpassen..
Viele Grüße