Doppelte Ordner mit Inhalt (in Verschiedenen Verzeichnissen) zusammenführen
hallo experten,
ich hoffe (eigentlich weiss ich es) ihr könnt mir helfen.
folgende situation:
ich habe auf laufwerk p dateien in ordnern mit selben namen und mit einem "kommentar als zusatz" in einem "Archiv"-verzeichnis
Beispiel:
p:\=ARCHIV=\10000000 - 10499999\10000086\10000086.csv
p:\=ARCHIV=\10000000 - 10499999\10000086\10000086 - SP.csv
nun möchte ich schauen bzw suchen ob es den ordner 10000086 schon
in einem anderen verzeichnis gibt und den inhalt dann dorthin verschieben sodas die archivverzeichnisse verschwinden bzw in die neue ordnerstruktur intigriert wird
p:\DG 100\
p:\DK 105\
p:\DK 120\
p:\DK 120 UF\
p:\DK 255 F\
p:\DK 400 N\
p:\DK 460 UF\
p:\DK 500 UF\
ich habe hier schon so einiges gefunden aber nicht das richtige für mein problem
ich würde es ja manuell machen. aber bei ca 30000 verzeichnissen suche ich mich dumm und dämlich bzw verschiebe ewigkeiten dateien
noch ein paar details
so sieht die ordnerstruktur aus
doppelte dateien sollen entweder übersprungen werden oder mit einem extrazeichen umbenannt werden z.B.: §
umbenennen wäre besser da das leere verzeichniss beim verschieben ja verschwindet
danke & gruß
slugger
ich hoffe (eigentlich weiss ich es) ihr könnt mir helfen.
folgende situation:
ich habe auf laufwerk p dateien in ordnern mit selben namen und mit einem "kommentar als zusatz" in einem "Archiv"-verzeichnis
Beispiel:
p:\=ARCHIV=\10000000 - 10499999\10000086\10000086.csv
p:\=ARCHIV=\10000000 - 10499999\10000086\10000086 - SP.csv
nun möchte ich schauen bzw suchen ob es den ordner 10000086 schon
in einem anderen verzeichnis gibt und den inhalt dann dorthin verschieben sodas die archivverzeichnisse verschwinden bzw in die neue ordnerstruktur intigriert wird
p:\DG 100\
p:\DK 105\
p:\DK 120\
p:\DK 120 UF\
p:\DK 255 F\
p:\DK 400 N\
p:\DK 460 UF\
p:\DK 500 UF\
ich habe hier schon so einiges gefunden aber nicht das richtige für mein problem
ich würde es ja manuell machen. aber bei ca 30000 verzeichnissen suche ich mich dumm und dämlich bzw verschiebe ewigkeiten dateien
noch ein paar details
so sieht die ordnerstruktur aus
doppelte dateien sollen entweder übersprungen werden oder mit einem extrazeichen umbenannt werden z.B.: §
umbenennen wäre besser da das leere verzeichniss beim verschieben ja verschwindet
danke & gruß
slugger
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 214635
Url: https://administrator.de/forum/doppelte-ordner-mit-inhalt-in-verschiedenen-verzeichnissen-zusammenfuehren-214635.html
Ausgedruckt am: 20.04.2025 um 05:04 Uhr
14 Kommentare
Neuester Kommentar
Moin ...
Wie und nach welche Kriterium du da was wohin sortieren willst, wie der inhalt aus
p:\=ARCHIV=\10000000 - 10499999\10000086\10000086.csv in das Verzeichnis
p:\DG 100\ oder
p:\DK 120 UF\
kommt kann keiner erahnen. Das Bild hilft mir diesen Zusammenhang auch nicht besser zu verstehen -> Da kommst du nicht drumherrum es von hand zu erledigen.
um den Aufwand einzuschrenken, gibt es 3 Möglichkeiten
a
suche dir ein Tool zum Duplicate Finden ...
Sollche Tools geben aber auch immer eine Liste aus, wo die Duplicate gefunden wurden ... du hast dabei die Chance alle Duplicate zu löschen, wobei die Tools auch ein Löschsicherungs Ordner anbieten somit werden die Duplicate aus dem Sourcebereich verschoben und die Single Datein hast du rausgefiltert. Selbige können dann separat von dir gehändelt werden. Durch die Gui siehst du auch vor dem umsetzen ein Ergebnis.
b
Eine Batchdatei könnte dir da helfen indem das System da alles gegenüberstellt und auch verschiebt umbennent löscht -> musst dem System halt vertrauen
c
Alternative bietet Windows natürlich die Verschiebereien auch so an, das du doppelte Datei beim verschieben umbennenen kannst.
MFG Uwe
Wie und nach welche Kriterium du da was wohin sortieren willst, wie der inhalt aus
p:\=ARCHIV=\10000000 - 10499999\10000086\10000086.csv in das Verzeichnis
p:\DG 100\ oder
p:\DK 120 UF\
kommt kann keiner erahnen. Das Bild hilft mir diesen Zusammenhang auch nicht besser zu verstehen -> Da kommst du nicht drumherrum es von hand zu erledigen.
um den Aufwand einzuschrenken, gibt es 3 Möglichkeiten
a
suche dir ein Tool zum Duplicate Finden ...
Sollche Tools geben aber auch immer eine Liste aus, wo die Duplicate gefunden wurden ... du hast dabei die Chance alle Duplicate zu löschen, wobei die Tools auch ein Löschsicherungs Ordner anbieten somit werden die Duplicate aus dem Sourcebereich verschoben und die Single Datein hast du rausgefiltert. Selbige können dann separat von dir gehändelt werden. Durch die Gui siehst du auch vor dem umsetzen ein Ergebnis.
b
Eine Batchdatei könnte dir da helfen indem das System da alles gegenüberstellt und auch verschiebt umbennent löscht -> musst dem System halt vertrauen
c
Alternative bietet Windows natürlich die Verschiebereien auch so an, das du doppelte Datei beim verschieben umbennenen kannst.
MFG Uwe
moin Slugger,
in der CMD-Line hab ich das mal kurz (na gut bei 'nem Bier) aufgrund Deiner Daten zusammengeschruppt:
[edit] die eckigen Klammern um die Ordnernamen entfernt. [/edit]
In der ersten Schleife %Q bezeichnet Deinen Pfad.
In der zweiten Schleife %A ist Deine Aktion. Echo zeigt nur an was es machen würde, wenn Du es entfernst.
Das erste größer als ist mein Prompt.
Das kann sicher bei Erfolg auf eine CMD-Batch portiert werden.
Gruß Phil
in der CMD-Line hab ich das mal kurz (na gut bei 'nem Bier) aufgrund Deiner Daten zusammengeschruppt:
> for %Q in (P:) do @for %A in ("echo move") do @for /f "delims=" %i in ('" dir /b /ad /s "%~fQ\????????" 2>nul |findstr /virc:\\=ARCHIV=\\ /c:\\=VORLAGEN=\\ |findstr /e \\[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] "') do @cmd /c "for /r "%~fQ\=Archiv=" %a in ("%~nxi\*") do @for /f %N in ('2^>nul (dir /b "%~fi\%~nxa" "%~fi\%~na [*]%~xa"^&echo^(^)^|find /c /v ""') do @echo(&if %N gtr 1 (%~A "%a" "%i\%~na [%N]%~xa") else %~A "%a" "%i""
[edit] die eckigen Klammern um die Ordnernamen entfernt. [/edit]
In der ersten Schleife %Q bezeichnet Deinen Pfad.
In der zweiten Schleife %A ist Deine Aktion. Echo zeigt nur an was es machen würde, wenn Du es entfernst.
Das erste größer als ist mein Prompt.
Das kann sicher bei Erfolg auf eine CMD-Batch portiert werden.
Gruß Phil
Es sind fünf verschachtelte Forschleifen.
1. Schleife %Q: QuellPfadangabe Laufwerk P:
2. Schleife %A: Welche Aktion soll mit den Dateien ausgeführt werden? -> echo move -> gefahrloses Anzeigen der Aktion.
3. Schleife %i: Auflistung aller Ordner mit 8 Ziffern und Umschließenden eckigen Klammern AUSSER aus den Ordnern [=ARCHIV=] sowie [=VORLAGEN=]
4. Schleife %a: Rekursives Auflisten der Dateien aus den gleichen Unterordnern von der 3. Schleife aus den [=ARCHIV=]-Ordner
5. Schleife %N: Suche nach schon Vorhandenen gleichnamigen Dateien in den Ordnern in welche die Dateien verschoben werden sollen. Bei gleichnamigen Dateien werden diese beim verschieben umbenannt sonst so gelassen.
Die Umbenennung erfolgt nach den Muster des Explorers aber mit [eckiger Klammer] anstatt (runder Klammer):
Die ganze Zeile (ohne das Führende größer als Zeichen > kopierst Du.
Öffne eine Eingabeaufforderung unter Ausführen ( [Win]+[R] ) oder "Programme/Dateien suchen"
Füge den Code mit Rechtsklick - Einfügen in die CMD-Line ein.
Mit Enter abschliessen.
Wenn das Ergebnis so passt dann das echo aus der zweiten Schleife Entfernen.
Gruß Phil
1. Schleife %Q: QuellPfadangabe Laufwerk P:
2. Schleife %A: Welche Aktion soll mit den Dateien ausgeführt werden? -> echo move -> gefahrloses Anzeigen der Aktion.
3. Schleife %i: Auflistung aller Ordner mit 8 Ziffern und Umschließenden eckigen Klammern AUSSER aus den Ordnern [=ARCHIV=] sowie [=VORLAGEN=]
4. Schleife %a: Rekursives Auflisten der Dateien aus den gleichen Unterordnern von der 3. Schleife aus den [=ARCHIV=]-Ordner
5. Schleife %N: Suche nach schon Vorhandenen gleichnamigen Dateien in den Ordnern in welche die Dateien verschoben werden sollen. Bei gleichnamigen Dateien werden diese beim verschieben umbenannt sonst so gelassen.
Die Umbenennung erfolgt nach den Muster des Explorers aber mit [eckiger Klammer] anstatt (runder Klammer):
Datei.txt
Datei [2].txt
Datei [3].txt
Datei [4].txt
File.txt
File [2].txt
File [3].txt
...
Die ganze Zeile (ohne das Führende größer als Zeichen > kopierst Du.
Öffne eine Eingabeaufforderung unter Ausführen ( [Win]+[R] ) oder "Programme/Dateien suchen"
cmd /k prompt $g$s
Mit Enter abschliessen.
Wenn das Ergebnis so passt dann das echo aus der zweiten Schleife Entfernen.
Gruß Phil
moin Slugger,
es lag an den Eckigen Klammern um die Ordnernamen, welche in deinem Bild zu sehen sind. Es ist aber die Darstellung Deines Norton Commander.
Ich hab die Eckigen Klammern aus der Suche Entfernt. Jetzt sollte die Zeile zumindest ein Ergebnis bringen.
Batch Erstellung nach Feedback.
Gruß Phil
es lag an den Eckigen Klammern um die Ordnernamen, welche in deinem Bild zu sehen sind. Es ist aber die Darstellung Deines Norton Commander.
Ich hab die Eckigen Klammern aus der Suche Entfernt. Jetzt sollte die Zeile zumindest ein Ergebnis bringen.
Batch Erstellung nach Feedback.
Gruß Phil
moin Slugger,
Eventuell ist die Ordnerliste des Zieles in der Forschleife nicht praktikabel.
Die Liste wird nun Vorab erstellt und danach in einer Schleife abgearbeitet.
Hier ist die Umsetzung als Batch:
Gruß Phil
Eventuell ist die Ordnerliste des Zieles in der Forschleife nicht praktikabel.
Die Liste wird nun Vorab erstellt und danach in einer Schleife abgearbeitet.
Hier ist die Umsetzung als Batch:
@echo off
setlocal
set Quelle=P:
set Aktion=echo move
set "Liste=%temp%\Liste_Ziele.txt"
rem Liste der vorhandenen Zielordner erstellen
dir /b /ad /s "%Quelle%\????????" 2>nul |findstr /virc:\\=ARCHIV=\\ /c:\\=VORLAGEN=\\ |findstr /e \\[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] >"%Liste%"
rem Dateien aus dem Archiv in die jeweiligen Ziele verschieben
for /f "usebackq delims=" %%z in ("%Liste%") do for /r "%Quelle%\=Archiv=" %%q in ("%%~nxz\*") do (
for /f %%N in ('2^>nul (dir /b "%~fq\%%~nxz" "%~fq\%%~nz [*]%%~xz"^&echo^(^)^|find /c /v ""') do if %%N gtr 1 (
%Aktion% "%%q" "%%z\%%~nq [%%N]%%~xq"
) else %Aktion% "%%q" "%%z"
)
del "%Lsite%"
Gruß Phil