Batch automatisiertes Kopieren

maatik

Newbie
Registriert
Okt. 2015
Beiträge
3
Hallo Leute,

ich melde mich hier weil ich eure Hilfe brauche beim coden einer Batch die einfach nur kopieren soll.
Zu meinen Vorkenntinissen: ich habe keine Programmierkenntnisse, weiß aber was eine batch ist und nutze sie hin und wieder um mehrere Programme oder Dateien auf einmal zu starten, gern auch mit Parametern für die Programme. Also viel ist es nicht ;-)

Meine Aufgabe besteht darin regelmäßig Ordner und Dateien auf einen USB-Stick zu kopieren, dabei liegen die zu kopierenden Dateien auf C: immer in demselben Ordner, die von D: zu kopierenden in einem Ordner der pro Jahr seinen Ordnernamen ändert.

Zum Beispiel sollen kopiert werden:

C:\Ordner1
D:\Ordner2\aktuellesJahr mit Syntax JJJJ\*.log
D:\Ordner2\aktuellesJahr mit Syntax JJJJ\Ordner3
D:\Ordner2\aktuellesJahr mit Syntax JJJJ\Ordner5 (nicht wundern, Ordner4 brauche ich nicht)

Das Ganze soll auf einen USB-Stick kopiert werden, dafür soll automatisch ein Ordner angelegt werden mit folgender Syntax in dem das Ganze dann landet:

JJJJMMDD_Eingabe1_Eingabe2

JJJJMMDD soll das aktuelle Datum sein, also nicht extra eingegeben werden.
Eingabe1 und Eingabe2 soll extra abgefragt werden und von mir jedesmal händisch eingeben werden.
Der Laufwerksbuchstabe des USB-Sticks ist natürlich auch jedesmal anders. Die Batch wird aber auf dem USB-Stick selber liegen und auch von dort ausgeführt werden, ich denke man kann den Path des Sticks so irgendwie ermitteln?

Ist das mit einer Batch machbar ?

Es ist wichtig das es eine Batch ist weil die PC´s sozusagen Grundausstattung haben und keine extra Software installiert werden soll.

Was meint ihr, ist das machbar ?

Gruss maat
 
Ja, ist definitiv machbar und relativ einfach.

Für die *.log Dateien reicht bspw.
Code:
copy D:\Ordner2\%date:~6,4%\*.log *.log
Für die Verzeichnisse nimmst du wahrscheinlich am besten robocopy oder xcopy.
Ergänzung ()

Und für die Verzeichnisse wäre dann bspw.
Code:
robocopy D:\Ordner2\%date:~6,4%\Ordner3 .\Ornder3 /E
Damit der Unterordner Ordner3 als Ordner3 direkt an die Stelle, an der die Batch liegt, kopiert wird.
 
Zuletzt bearbeitet:
@simpsonsfan, danke dir, habe mir robocopy mal angeschaut, damit kann ich echt viel machen. Ich poste mal meinen ersten Entwurf. Danke dir.
Ergänzung ()

Ok, hab mal angefangen:

set /p "OrdnernameTeil1=Bitte geben Sie den 1. Teil des Ordnernamens ein: "
set /p "OrdnernameTeil2=Bitte geben Sie den 2. Teil des ORdnernamens ein: "
md "%date:~8,2%%date:~3,2%%date:~0,2%-%OrdnernameTeil1%_%OrdnernameTeil2%"

Diese generiert mir in der root der batch einen Ordner wie gewünscht:

JJMMTT-OrdnernameTeil1_OrdnernameTeil2

Meine Frage: Diese Deklaration würde ich gern als Variable weiternutzen. Wie kann ich %date:~8,2%%date:~3,2%%date:~0,2%-%OrdnernameTeil1%_%OrdnernameTeil2% als Variable definieren um danach damit weiterzuarbeiten?

Gruss maat
 
Mit set. Für diese ganz grundlegenden Befehle, siehe auch einfach mal hier.
 
Es funzt .-) Danke Euch für die Starthilfe, Verbesserungen gerne willkommen :-)
Code:
@ECHO OFF
ECHO ******Beschreibung1*******
ECHO ******Beschreibung2*******
PAUSE
set /p "projektname=Bitte geben Sie den Projektnamen ein, z.Bsp. XXXXXXXX: "
set /p "system=Bitte geben Sie das System ein, z.Bsp. 1 oder 2: "
set /p "servicetyp=Bitte geben Sie den Servicetyp ein, z.Bsp. XXXXXXXX: "
set /p "bearbeiter=Bitte geben Sie Ihre Kuerzel ein, z.Bsp. XX: "
ECHO Die Ablageordner auf dem USB-Stick werden erstellt
PAUSE

set Projektordner=%date:~8,2%%date:~3,2%%date:~0,2%-%projektname%_%servicetyp%_%bearbeiter%


md "%Projektordner%\logfiles\%Projektordner%\SYS%system%"
md "%Projektordner%\ProgrammeKonfiguration\%Projektordner%\SYS%system%"
md "%Projektordner%\screenshots\%Projektordner%\SYS%system%"

ECHO Die Ablageordner auf dem USB-Stick wurden erfolgreich erstellt
PAUSE

set ZielLogfiles=%Projektordner%\logfiles\%Projektordner%\SYS%system%
set ZielProgramme=%Projektordner%\ProgrammeKonfiguration\%Projektordner%\SYS%system%
set ZielScreenshots=%Projektordner%\screenshots\%Projektordner%\SYS%system%

ECHO Das Kopieren der Daten wurde vorbereitet
PAUSE
robocopy C:\Ordner1 %ZielProgramme% /E
robocopy D:\logfiles\%date:~6,4%\ %ZielLogfiles%\ /E /XD D:\logfiles\%date:~6,4%\Bilder\sonst

ECHO Die Daten wurden erfolgreich kopiert
PAUSE
 
Zurück
Oben