Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Doppelte Ordner mit Inhalt (in Verschiedenen Verzeichnissen) zusammenführen

Frage Microsoft Windows 7

Mitglied: Slugger

Slugger (Level 1) - Jetzt verbinden

19.08.2013, aktualisiert 12:49 Uhr, 3825 Aufrufe, 14 Kommentare

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
2bb1d8aeda436e0613f98849f932e58f - Klicke auf das Bild, um es zu vergrößern

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
Mitglied: Metzger-MCP
19.08.2013, aktualisiert um 13:08 Uhr
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.

Mit freundlichen Grüßen Uwe
Bitte warten ..
Mitglied: Slugger
19.08.2013 um 13:58 Uhr
Zitat von Metzger-MCP:
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.

es soll ja auch nach dem ordner "10000086" in den verzeichnissen "DG 100", "DK 120 UF" usw gesucht werden. anschließend sollen die ordner verschoben werden samt inhalt

also wenn ordner a aus verzeichnis a in verzeichnis b inkl. aller unterordner vorhanden dann verschiebe ordner a nach unterordner in verzeichnis b, bei vorhandener datei zieldatei umbenennen in "dateiname $.xxx"
wenn ordner a aus verzeichnis a nirgendwo vorhanden ist dann nichts verschieben und weiter mit dem nächsten ordner in verzeichnis a
Bitte warten ..
Mitglied: pieh-ejdsch
19.08.2013, aktualisiert 22.08.2013
moin Slugger,

in der CMD-Line hab ich das mal kurz (na gut bei 'nem Bier) aufgrund Deiner Daten zusammengeschruppt:
01.
 
02.
> 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
Bitte warten ..
Mitglied: Slugger
20.08.2013 um 06:13 Uhr
hi phil,

damit kann ich fast gar nichts anfangen.
ist mir etwas zu heavy.
bräuchte eventuell eine kleine erklärung was hier was ist.

aber danke schonmal für die mühe
gruß
slugger
Bitte warten ..
Mitglied: Metzger-MCP
20.08.2013 um 10:08 Uhr
Moin
Ich bastel mal was zusammen, sofern mir da andere nicht zuvorkommen.
Mit freundlichen Grüßen Uwe
Bitte warten ..
Mitglied: pieh-ejdsch
20.08.2013, aktualisiert um 16:50 Uhr
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):
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"
01.
cmd /k prompt $g$s
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
Bitte warten ..
Mitglied: Slugger
21.08.2013, aktualisiert 22.08.2013
danke für die mühe phil,

irgendwie stelle ich mich wie der erste mensch an
habe alles reinkopiert (ja auch ohne das erste > ) und auch ausgeführt aber es rührt sich nichts
sollte da nicht wenigsten was angezeigt werden (ich meine jetzt keinen fortschrittsbalken)
desweiteren ist mir nicht klar ob damit die ordner verschoben werden oder nur die dateien
die ordner sind ja dann leer und sollen deshalb auch entfernt werden damit im archiv keine leeren ordner existieren

also nur nochmal für die anderen zum verständnis (ich tu mich da immer etwas schwer mit dem erklären)

innerhalb der archivordner (ORT A) sind ordner mit einer acht-stelligen nummer (auftragsordner)

diese auftragsordner können auch in einem der den anderen ordnern, welche mit DG oder DK beginnen, vorhanden sein (ORT B)

wenn der auftragsordner aus ORT A in ORT B vorhanden ist, dann soll der inhalt von A nach B verschoben werden und demzufolge auch auf A nicht mehr vorhanden sein

meine güte ist das kompliziert zu erklären
ich hoffe es kommt einigermaßen verständlich rüber

gruß
slugger

edit:

funktioniert dies auch mit netzlaufwerken ?
irgendwie macht er da nix
nachdem ich enter drücke springt er lediglich in die neue commandozeile
wo soll er mir da was anzeigen ?
Bitte warten ..
Mitglied: Slugger
22.08.2013 um 09:09 Uhr
geht alles nicht
Bitte warten ..
Mitglied: pieh-ejdsch
22.08.2013 um 18:17 Uhr
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
Bitte warten ..
Mitglied: Slugger
29.08.2013, aktualisiert um 09:42 Uhr
hallo phil,

habe es probiert, aber erfolglos

ich habe folgendes hineinkopiert

01.
for %Q in (T:) 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""
anschließend wußte ich nicht was (echo(s)) ich alles entfernen muß damit es funktioniert
habe dementsprechend nur das erste echo entfernt, das sah dann so aus

01.
for %Q in (T:) do @for %A in (" 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""
ich habe mal auf T: eine kopie erstellt (vorsichtshalber)
P: und T: sind netzlaufwerke, macht dies einen unterschied oder sollte man dies nur lokal machen z.b. auf C: oder D:

gruß
slugger
Bitte warten ..
Mitglied: Slugger
19.09.2013, aktualisiert 23.09.2013
ich brauche immernoch hilfe
leider klappt es nicht
Bitte warten ..
Mitglied: Slugger
23.09.2013 um 13:32 Uhr
scheint wohl doch recht heftig zu sein das problem
Bitte warten ..
Mitglied: Slugger
20.11.2013 um 12:57 Uhr
schade das mir hier keiner weiterhelfen kann
Bitte warten ..
Mitglied: pieh-ejdsch
20.11.2013 um 18:33 Uhr
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:
01.
@echo off 
02.
setlocal 
03.
set  Quelle=P: 
04.
set  Aktion=echo move 
05.
set  "Liste=%temp%\Liste_Ziele.txt" 
06.
 
07.
 rem Liste der vorhandenen Zielordner erstellen 
08.
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%" 
09.
 
10.
 rem Dateien aus dem Archiv in die jeweiligen Ziele verschieben 
11.
for /f "usebackq delims=" %%z in ("%Liste%") do for /r "%Quelle%\=Archiv=" %%q in ("%%~nxz\*") do ( 
12.
  for /f %%N in ('2^>nul (dir /b "%~fq\%%~nxz" "%~fq\%%~nz [*]%%~xz"^&echo^(^)^|find /c /v ""') do if %%N gtr 1 ( 
13.
         %Aktion% "%%q" "%%z\%%~nq [%%N]%%~xq" 
14.
  ) else %Aktion% "%%q" "%%z" 
15.
16.
del "%Lsite%"
Gruß Phil
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
gelöst Mehrere CSV Dateien aus verschiedenen Ordner einlesen via VBA (12)

Frage von mtufangil zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...