CMD Script gesucht: HDD incl. SubFolder durchsuchen und Dateien kopieren
Moin liebe Community,
ich suche ein CMD Script was meine HDD (incl. Subbfolder) nach Datei Typen durchsucht (z.B. *.jpg, *.mp4, *.pdf etc.) und diese in ein Zielverzeichnis kopiert.
Dabei sollen die Dateien jeweils ein eigenes Verzeichnis bekommen (z.B. PDF Files in ein PDF Verzeichnis, JPG in das JPG Verzeichnis). So das ich eine schöne Baumstruktur habe.
Soll später so aus sehen:
C:\_Backup\JPG
C:\_Backup\PDF
C:\_Backup\MP4
...
Das Sahnehäubchen wäre es, wenn ein C:\_Backup\Logs Verzeichnis erstellt wird, wo nach Datum und Datei Typ eine Log Datei abliegt.
Über eure Hilfe wäre ich sehr Dankbar.
ich suche ein CMD Script was meine HDD (incl. Subbfolder) nach Datei Typen durchsucht (z.B. *.jpg, *.mp4, *.pdf etc.) und diese in ein Zielverzeichnis kopiert.
Dabei sollen die Dateien jeweils ein eigenes Verzeichnis bekommen (z.B. PDF Files in ein PDF Verzeichnis, JPG in das JPG Verzeichnis). So das ich eine schöne Baumstruktur habe.
Soll später so aus sehen:
C:\_Backup\JPG
C:\_Backup\PDF
C:\_Backup\MP4
...
Das Sahnehäubchen wäre es, wenn ein C:\_Backup\Logs Verzeichnis erstellt wird, wo nach Datum und Datei Typ eine Log Datei abliegt.
Über eure Hilfe wäre ich sehr Dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 370351
Url: https://administrator.de/contentid/370351
Ausgedruckt am: 26.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Simon sagt: Powershell
Schnuffi
$drive = "D:"
$target = "c:\_Backup"
$log = "c:\_Backup\backup.log"
Start-Transcript -Path $log -Append
gci "$drive\*" -File -Recurse -Force -Include "*.pdf","*.mp4" | group Extension | %{
$dest = $target + "\" + $_.Name.Substring(1)
if (!(Test-Path $dest)){md $dest -Force | out-null}
$_.Group | copy-item -Destination $dest -Verbose
}
Stop-Transcript
Nur mit Robocopy in die Extension Ordner einsortieren wird damit dann doch aufwendig .
Und wie bekommst du die Files da dann ohne Baumstruktur (flat) nur mit robocopy reinkopiert?
Wozu schreibt man dann Skripte wenn man doch wieder alles von Hand macht
Wozu schreibt man dann Skripte wenn man doch wieder alles von Hand macht
Hallo,
hier noch (wie gefordert) eine Lösung in Batchscript:
Wo Quelllaufwerk, Zielverzeichnis und die zu kopierenden Dateitypen konfiguriert werden können sollte klar sein. Aber Achtung! Die Dateitypen müssen mit Leerzeichen getrennt aufgezählt werden und dürfen auf keinen Fall Wildcards (
Beim Zerlegen der Datums- und Zeitinformationen aus den entsprechenden Umgebungsvariablen wird von den deutschen Standardformaten ausgegangen (
Falls Du die Zeitinformation im Namen der Log-Datei nicht benötigst, lösche die Zeilen 11 und 12 und entferne die Variable
Grüße
Friemler
hier noch (wie gefordert) eine Lösung in Batchscript:
@echo off & setlocal
set "SrcDrive=D:"
set "DstFolder=C:\_Backup"
set "LogFolder=%DstFolder%\Logs"
set "FileTypes=JPG PDF MP4"
set "Dt=%Date%"
set "Today=%Dt:~6,4%-%Dt:~3,2%-%Dt:~0,2%"
set "Tm=%Time%"
set "Now=%Tm:~0,2%-%Tm:~3,2%-%Tm:~6,2%"
set "LogFilenamePrefix=%Today%_%Now%"
md "%LogFolder%" 2>NUL
for %%a in (%FileTypes%) do (
md "%DstFolder%\%%a" 2>NUL
(for /f "tokens=* delims=" %%b in ('dir /s /b /a:-d "%SrcDrive%\*.%%a" 2^>NUL') do (
copy "%%b" "%DstFolder%\%%a" 1>NUL 2>NUL && (
echo Datei kopiert: %%b
) || (
echo Kopieren fehlgeschlagen: %%b
)
)) > "%LogFolder%\%LogFilenamePrefix%_%%a.log"
)
Wo Quelllaufwerk, Zielverzeichnis und die zu kopierenden Dateitypen konfiguriert werden können sollte klar sein. Aber Achtung! Die Dateitypen müssen mit Leerzeichen getrennt aufgezählt werden und dürfen auf keinen Fall Wildcards (
*
oder ?
) enthalten!Beim Zerlegen der Datums- und Zeitinformationen aus den entsprechenden Umgebungsvariablen wird von den deutschen Standardformaten ausgegangen (
dd.MM.yyyy
für das Datum, hh:mm:ss
für die Zeit). Sollte auf dem Zielsystem etwas anderes eingestellt sein, müssen die Zeilen 9 und 12 entsprechend angepasst werden.Falls Du die Zeitinformation im Namen der Log-Datei nicht benötigst, lösche die Zeilen 11 und 12 und entferne die Variable
%Now%
inkl. dem vorangestellten Unterstrich aus Zeile 14.Grüße
Friemler