Dateien mit Unterstruktur verschieben
Hallo Leute,
folgendes Problem habe ich aktuell:
Wir besitzen eine großes Storrage mit ca. 7TB an Dateien.
Von dort sollen jetzt Dateien auf ein anderes (billiges) Storrage verschoben werden.
Dateien die in Bestimmten Ordnern liegen.
Das Konzept sieht später eine "automatische Reinigung" vor.
Glücklicher weise haben wir die Ordner schon passend benannt:
E:\Firma\Dokumente\2103\2010\2010-01\2010-01-15\Subordner\Subordner\*.*
Ich benötige nun eine "Logik" die es mir ermöglicht entweder ab Ordner 2010 oder 2010-01 oder 2010-01-15 alles zu verschieben.
Mit Robocopy kann ich keine Ordnerliste verarbeiten.
Zumindest habe ich es nur geschafft Ordner wegzulassen aber nicht ausschließlich nur bestimmte Ordner einer Struktur zu verschieben...
Mit folgendem Code von Bastla habe ich mich schon beschäftigt
dieser funktioniert sehr gut wenn ich alle Dateien in allen Ordnern erfasse.
eine txt Datei über 7TB Inhalt mit jeder Datei zu erstellen ist aber sehr aufwändig.
Leider habe ich momentan keinen Ansatz mehr da ich mich mit Schleifen und Batch nicht auskenne.
PS: im Totalcommander kann ich zwar nach Ordner "Pattern" filtern - dort kann ich aber nicht die gesamte Struktur mit dem Ordner kopieren sondern immer nur den Ordner...
Vielleicht hat ja jemand eine Idee.
LG
folgendes Problem habe ich aktuell:
Wir besitzen eine großes Storrage mit ca. 7TB an Dateien.
Von dort sollen jetzt Dateien auf ein anderes (billiges) Storrage verschoben werden.
Dateien die in Bestimmten Ordnern liegen.
Das Konzept sieht später eine "automatische Reinigung" vor.
Glücklicher weise haben wir die Ordner schon passend benannt:
E:\Firma\Dokumente\2103\2010\2010-01\2010-01-15\Subordner\Subordner\*.*
Ich benötige nun eine "Logik" die es mir ermöglicht entweder ab Ordner 2010 oder 2010-01 oder 2010-01-15 alles zu verschieben.
Mit Robocopy kann ich keine Ordnerliste verarbeiten.
Zumindest habe ich es nur geschafft Ordner wegzulassen aber nicht ausschließlich nur bestimmte Ordner einer Struktur zu verschieben...
Mit folgendem Code von Bastla habe ich mich schon beschäftigt
@echo off & setlocal
set "Liste=D:\Liste.txt"
set "Archiv=D:\Verschobene Dateien"
set "Fehler=D:\Errors.txt"
if exist "%Fehler%" del "%Fehler%"
for /f "usebackq delims=" %%i in ("%Liste%") do md "%Archiv%%%~pi" 2>nul & move "%%i" "%Archiv%%%~pnxi" || echo %%i>>"%Fehler%"
dieser funktioniert sehr gut wenn ich alle Dateien in allen Ordnern erfasse.
eine txt Datei über 7TB Inhalt mit jeder Datei zu erstellen ist aber sehr aufwändig.
Leider habe ich momentan keinen Ansatz mehr da ich mich mit Schleifen und Batch nicht auskenne.
PS: im Totalcommander kann ich zwar nach Ordner "Pattern" filtern - dort kann ich aber nicht die gesamte Struktur mit dem Ordner kopieren sondern immer nur den Ordner...
Vielleicht hat ja jemand eine Idee.
LG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 144474
Url: https://administrator.de/forum/dateien-mit-unterstruktur-verschieben-144474.html
Ausgedruckt am: 23.12.2024 um 10:12 Uhr
15 Kommentare
Neuester Kommentar
Hi
wie wäre es mit regulären Ausdrücken (für Totalcommander)?
Robocopy kommt damit auch sicher klar, sofern du placeholder nutzt wie
E:\Firma\Dokumente \2103\????\????-??\????-??-???\
Deine Ordnung kennst du natürlich am besten. Da du wohl an Windows gefesselt bist (mit SAMFS kennst du solche Probleme nicht da du Dateien nach mehrere Kriterein automatisch auf andere (billiger+langsamere) Bereiche verschoben wird ohne dein Zutun; du hast dann nur noch ein System welches alte(=migrierte) Daten einfach langsamer gibt als topaktuelle.
Gruß
Sam
wie wäre es mit regulären Ausdrücken (für Totalcommander)?
Robocopy kommt damit auch sicher klar, sofern du placeholder nutzt wie
E:\Firma\Dokumente \2103\????\????-??\????-??-???\
Deine Ordnung kennst du natürlich am besten. Da du wohl an Windows gefesselt bist (mit SAMFS kennst du solche Probleme nicht da du Dateien nach mehrere Kriterein automatisch auf andere (billiger+langsamere) Bereiche verschoben wird ohne dein Zutun; du hast dann nur noch ein System welches alte(=migrierte) Daten einfach langsamer gibt als topaktuelle.
Gruß
Sam
Hallo photographix!
Dann (ungetestet) etwa so:
Das "
Grüße
bastla
Dann (ungetestet) etwa so:
@echo off & setlocal
set "Quelle=E:\Firma\Dokumente"
set "Archiv=D:\Verschobene Dateien"
set "Kennung=2010"
for /d %%i in ("%Quelle%\*.*") do if exist "%%i\%Kennung%" (
md "%Archiv%%%~pi%Kennung%" 2>nul
echo move "%%i\%Kennung%" "%Archiv%%%~pi%Kennung%" || echo %%i>>"%Fehler%"
)
echo
" steht nur zum gefahrlosen Testen drin ...Grüße
bastla
Hallo photographix!
Da Du (anders als in meinem Ansatz) als Kennung einen Ordner mit Unterordner verwendest, ergibt sich daraus das Problem, dass am Ziel der Teilpfad "2010" noch fehlt - daher ein Versuch mit expliziter Angabe der beiden Pfade:
Grüße
bastla
Da Du (anders als in meinem Ansatz) als Kennung einen Ordner mit Unterordner verwendest, ergibt sich daraus das Problem, dass am Ziel der Teilpfad "2010" noch fehlt - daher ein Versuch mit expliziter Angabe der beiden Pfade:
@echo off & setlocal
set "Quelle=z:"
set "Archiv=D:\neu" <- Testordner
set "Jahr=2010"
set "Monat=2010-01"
for /d %%i in ("%Quelle%\*.*") do if exist "%%i\%Jahr%\%Monat%" (
md "%Archiv%%%~pnxi\%Jahr%" 2>nul
move "%%i\%Jahr%\%Monat%" "%Archiv%%%~pnxi\%Jahr%" || >>"%Fehler%" echo %%i\%Jahr%\%Monat%
)
bastla
Hallo photographix!
Wie sieht denn jetzt die Fehlermeldung aus?
Eigentlich sollte unter Batch das Verschieben auf andere Partitionen / Laufwerke möglich sein, aber zur Not ließe sich das ja auch aufteilen:
(Jetzt könnten %Jahr% und %Monat% wieder in einer Variablen zusammengefasst werden).
Grüße
bastla
Wie sieht denn jetzt die Fehlermeldung aus?
Eigentlich sollte unter Batch das Verschieben auf andere Partitionen / Laufwerke möglich sein, aber zur Not ließe sich das ja auch aufteilen:
@echo off & setlocal
set "Quelle=z:"
set "Archiv=D:\neu"
set "Jahr=2010"
set "Monat=2010-01"
for /d %%i in ("%Quelle%\*.*") do if exist "%%i\%Jahr%\%Monat%" (
xcopy /e "%%i\%Jahr%\%Monat%" "%Archiv%%%~pnxi\%Jahr%\%Monat%\" || >>"%Fehler%" echo %%i\%Jahr%\%Monat%
rd /s /q "%%i\%Jahr%\%Monat%"
)
Grüße
bastla