nidavellir
Goto Top

Ordner per Batch verschieben, Datei kopieren

Guten Abend face-smile

Ich möchte mein Backup etwas anpassen und muss dafür viele Ordner verschieben und jeweils eine Datei kopieren.
Einen Einzeiler zum Verschieben/Kopieren bekomme ich sicher noch zusammen, aber bei Schleifen und Variablen steige ich einfach aus.
Für euch ist das vermutlich reichlich trivial, aber ich würde für das Skript vermutlich genauso lange brauchen wie wenn ich es gleich händisch machen würde...
Aber ich möchte schließlich auch etwas lernen, und das geht am konkreten Beispiel sicher am Besten. face-smile

Quelle:
Gut 50 Ordner nach dem Schema "2016-09-19_00.00" jeweils mit den Unterordnern "MP_Images", "staging", "Nextcloud", etc.

D:\2016-09-19_00.00\
  • Nextcloud
  • staging
  • MP_Images
...
  • backupset.hbs

Jetzt sollen aus den ganzen Tagessicherungen (2016-09-19_00.00) zum Beispiel die Ordner "MP_Images" verschoben werden nach D:\MP_Images\2016-09-19_00.00

D:\MP_Images\
  • 2016-09-17_00.00\MP_Images\
  • 2016-09-18_00.00\MP_Images\
  • 2016-09-19_00.00\MP_Images\
D:\staging\
  • 2016-09-19_00.00\staging\
...

Zusätzlich soll in den Ordner 2016-09-19_00.00 jeweils noch die Datei backupset.hbs aus der jeweiligen Tagessicherung kopiert werden.

Die ganzen Zielordner nach dem Schema "2016-09-19_00.00" habe ich vorbereitet und in die Zielpfade kopiert.


Ist meine Zielsetzung verständlich? Könnte mir jemand mit einem passenden Skript helfen? face-smile

Viele Grüße
Shape.Shifter

Content-Key: 315740

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

Ausgedruckt am: 19.03.2024 um 03:03 Uhr

Mitglied: rubberman
Lösung rubberman 20.09.2016 aktualisiert um 21:11:00 Uhr
Goto Top
Hallo Shape.Shifter

als Batch Script im Root von D: etwa so
@echo off &setlocal
for /f "delims=" %%i in ('dir /ad /b ????-??-??_??.??^|findstr /x "20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[0-5][0-9]\.[0-5][0-9]"') do (  
  for /f "delims=" %%j in ('dir /ad /b "%%i\*"') do (  
    2>nul md "%%j\%%i"  
    move "%%i\%%j" "%%j\%%i\"  
    copy "%%i\backupset.hbs" "%%j\%%i\"  
  )
)
pause
Die PowerShell Profis werden sicher auch noch einen Einzeiler hinterherschieben. Batch ist mittlerweile etwas outdated.

Grüße
rubberman
Mitglied: Nidavellir
Nidavellir 30.09.2016 um 21:37:34 Uhr
Goto Top
Hallo rubberman,

habe vielen Dank für deinen Beitrag! face-smile
Es hat alles wie gewünscht funktioniert.

Viele Grüße
Shape.Shifter