Top-Themen

Aktuelle Themen (A bis Z)

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

automatisch den Inhalt von Ordner verschiebem bzw kopieren

Mitglied: 6741

6741 (Level 2)

09.03.2007, aktualisiert 18.03.2007, 3709 Aufrufe, 15 Kommentare

Hallo,

ich habe einen Ordner ( Ordner1 ) mit ca. 200 Unterordnern. In jeden Unterordner befinden sich ein weitere Ordner mit ca. 50 - 200 Dateien. Jetzt möchte ich den 2. Unterordner eine Ebene höher verschoben bekommen. So das der erste Unterordner gelöscht wird und der zweite Unterordner eine Stufe höher rückt ...

hoffe mir kann einer eine nette Batch schreiben .....

schönes WE
Mitglied: bastla
09.03.2007 um 20:36 Uhr
Hallo firewalldevil!

Wie immer bei derartigen Aktionen stellt sich eine wichtige Frage: Sind Kollisionen von Unter-Unterordnernamen zu erwarten, und wie ist damit umzugehen?

Zur Erläuterung folgende beispielhafte Struktur:
01.
Ordner1 
02.
    Unterordner1 
03.
        Test1 
04.
        Test3 
05.
        Test4 
06.
            Datei1.txt 
07.
            Datei3.txt 
08.
    Unterordner2 
09.
        Test2 
10.
        Test4 
11.
            Datei2.txt 
12.
            Datei3.txt
Wenn nach Deinem Wunsch alle Test-Ordner zu Unterordnern von Ordner1 werden sollen, was soll mit Test4 aus Unterordner2 passieren?

Man könnte natürlich einfach alle enthaltenen Dateien in den dann schon existierenden Ordner Ordner1\Test4 (der aus Unterordner1 nach oben verschoben wurde) verschieben - nur würde sich dann die nächste Frage stellen: Was tun mit den beiden gleichnamigen Datei3.txt?

Wenn Du natürlich ausschließen kannst, dass es gleichnamige Unter-Unterordner geben kann, sind gleichnamige Dateien kein Problem ...
Noch eine andere Frage: Sind auch noch Unter-Unter-Unterordner zu berücksichtigen?

Grüße
bastla
Bitte warten ..
Mitglied: 6741
09.03.2007 um 22:21 Uhr
Hi bastla,

es gibt in dem ersten Ordner immer nur einen eindeutigen ordner, alles was im nächsten unterordner ist, soll eine Stufe höcher und der 2. unterordner kann gelöscht werden. Müsste wohl Ordner für Ordner druchgehen, da ich nicht weiß ob es dateien gibt die in der letzten ebene glecie sind. Wenn es baer Ordner für Ordner abgearbeitet wird, sollte nicht passieren.

gruß
Bitte warten ..
Mitglied: Biber
10.03.2007 um 12:53 Uhr
Hmmm, fwd,

ich bin nicht ganz sicher, ob ich die ganze Aktion richtig verstehe... ich frag lieber noch mal nach...

Ich habe eine Beispielstruktur angelegt, die ich mit zwei FOR /D-Anweisungen durchgehen könnte.
01.
$cmd$dir /b /s Root 
02.
Z:\> 
03.
$cmd$dir /b /s root 
04.
Z:\root\einsA 
05.
Z:\root\einsb 
06.
Z:\root\einsc 
07.
Z:\root\einsd 
08.
Z:\root\einsA\zweiAA 
09.
Z:\root\einsA\zweiBB 
10.
Z:\root\einsA\zweiCC 
11.
Z:\root\einsA\zweiDD 
12.
Z:\root\einsA\blaeinsA.txt 
13.
Z:\root\einsb\zweiNN 
14.
Z:\root\einsb\zweiMM 
15.
Z:\root\einsb\zweiOO 
16.
Z:\root\einsb\blaeinsb.txt 
17.
Z:\root\einsb\zweiOO\drei333 
18.
Z:\root\einsb\zweiOO\drei334 
19.
Z:\root\einsb\zweiOO\drei335 
20.
Z:\root\einsb\zweiOO\drei335\vier444 
21.
Z:\root\einsb\zweiOO\drei335\vier445 
22.
Z:\root\einsb\zweiOO\drei335\vier446 
23.
Z:\root\einsc\blaeinsc.txt 
24.
Z:\root\einsd\zweiXX 
25.
Z:\root\einsd\zweiYY 
26.
Z:\root\einsd\zweiZZ 
27.
Z:\root\einsd\zweiFF 
28.
Z:\root\einsd\zweiGG 
29.
Z:\root\einsd\zweiHH 
30.
Z:\root\einsd\blaeinsd.txt
Die Zählvariablen nenne ich %e für die erste, %z für die zweite Ebene.
01.
---- einmal Simulation mit "ECHO" 
02.
$cmd$for /D %e in (\Root\*.*) do @(for /d %z in (%e\*.*) do @echo move "%z" "%~dpe") && echo rd "%e" 
03.
move "\Root\einsA\zweiAA" "Z:\Root\" 
04.
move "\Root\einsA\zweiBB" "Z:\Root\" 
05.
move "\Root\einsA\zweiCC" "Z:\Root\" 
06.
move "\Root\einsA\zweiDD" "Z:\Root\" 
07.
rd "\Root\einsA" 
08.
move "\Root\einsb\zweiNN" "Z:\Root\" 
09.
move "\Root\einsb\zweiMM" "Z:\Root\" 
10.
move "\Root\einsb\zweiOO" "Z:\Root\" 
11.
rd "\Root\einsb" 
12.
move "\Root\einsd\zweiXX" "Z:\Root\" 
13.
move "\Root\einsd\zweiYY" "Z:\Root\" 
14.
move "\Root\einsd\zweiZZ" "Z:\Root\" 
15.
move "\Root\einsd\zweiFF" "Z:\Root\" 
16.
move "\Root\einsd\zweiGG" "Z:\Root\" 
17.
move "\Root\einsd\zweiHH" "Z:\Root\" 
18.
rd "\Root\einsd"
Jetzt etwas ernsthafter:
01.
$cmd$for /D %e in (\Root\*.*) do @(for /d %z in (%e\*.*) do @move "%z" "%~dpe">nul) &&  rd "%e" 2>nul 
02.
$cmd$for /D %e in (\Root\*.*) do @(for /d %z in (%e\*.*) do @move "%z" "%~dpe">nul) &&  rd "%e" 2>nul 
03.
 
04.
$cmd$dir /s /b root 
05.
Z:\root\einsA 
06.
Z:\root\einsb 
07.
Z:\root\einsc 
08.
Z:\root\einsd 
09.
Z:\root\zweiHH 
10.
Z:\root\zweiAA 
11.
Z:\root\zweiBB 
12.
Z:\root\zweiCC 
13.
Z:\root\zweiDD 
14.
Z:\root\zweiNN 
15.
Z:\root\zweiMM 
16.
Z:\root\zweiXX 
17.
Z:\root\zweiYY 
18.
Z:\root\zweiZZ 
19.
Z:\root\zweiFF 
20.
Z:\root\zweiGG 
21.
Z:\root\drei333 
22.
Z:\root\drei334 
23.
Z:\root\vier444 
24.
Z:\root\vier445 
25.
Z:\root\vier446 
26.
Z:\root\einsA\blaeinsA.txt 
27.
Z:\root\einsb\blaeinsb.txt 
28.
Z:\root\einsc\blaeinsc.txt 
29.
Z:\root\einsd\blaeinsd.txt
Ergebnis:
- die Ordner der Unterebenen sind in die neue Ebene "Root" verschoben worden.
- aber die Verzeichnisse einsA, einsB, einsC und einsD konnten nicht gelöscht werden, da dort noch Dateien liegen (blaeinsA.txt etc).

Was sollte denn mit solchen Dateien passieren, falls vorhanden? Wo gehören die denn hin?

Gruss
Biber
Bitte warten ..
Mitglied: 6741
10.03.2007 um 13:38 Uhr
Hi Biber ...

danke das du dich der Aufgabe stellst .... ;>)

\\daten\ordner1\ordner2\*.txt
.
.
. bis ca. 200 x
.
.
\\daten\ordner1\ordner2\*.txt

Ordner2 soll auf die Höhe von Ordner1 verschoben werden , dann kann Ordner1 ( alt ) gelöscht werden.

die Ordner 1 u. 2 haben keine Ordnung bzw sind mit Buchstaben, Zahlen und erlaubt Sonderzeichen verstehen. Es gibt keine erkennbar Struktur in der Benennung.

Können also hießen z.b. [asdee]_001 oder auch asdd-zzu09, das glaube ich ist das Problem ...

gruß in WE
Bitte warten ..
Mitglied: Biber
10.03.2007 um 13:50 Uhr
Moin fwd,

dann sollte das doppelte FOR/D-Schleifchen oben ja passen.
Du musst nur statt ...(\Root\*.*)... in meinem Beispiel bei dir schreiben: ....(\\daten\ordner?)...

Probier es doch mal vom CMD-Prompt mit der Simulations-Variante (die mit den "Echo"s).
for /D %e in (\\Daten\Ordner*.*) do @(for /d %z in (%e\*.*) do @echo move "%z" "%~dpe") && echo rd "%e"
Wie sieht denn dann das Ergebnis aus?

Gruss
Biber
Bitte warten ..
Mitglied: 6741
15.03.2007 um 17:52 Uhr
hi biber ...

es tut sich nichts ... mmhhh ...

der Ordner heißt jetzt ...

d:\daten1\daten2\ordner1\ordner2\

also von ordner2 nach ordner 1 soll gehen ...
Bitte warten ..
Mitglied: Biber
15.03.2007 um 19:02 Uhr
Moin, fwd,

dann reden wir noch ein ganz klein bissi aneinander vorbei.

Meine Zeile tut folgendes:
01.
(=18:56:10  F:\=) 
02.
><b>dir d:\daten1 /b /s</b> 
03.
d:\daten1\daten2 
04.
d:\daten1\daten2\ordner1 
05.
d:\daten1\daten2\ordner1\ordner2 
06.
(=18:56:20  F:\=) 
07.
><b>for /D %e in (d:\Daten1\*) do @(for /d %z in (%e\*.*) do @move "%z" "%~dpe") && rd "%e"</b> 
08.
 
09.
(=18:56:32  F:\=) 
10.
><b>dir d:\daten1 /b /s</b> 
11.
d:\daten1\ordner1 
12.
d:\daten1\ordner1\ordner2
Bitte mal mal das auf, was bei Dir bei dem "dir d:\daten1 /b /s" herauskommen soll.

Offensichtlich habe ich die Unter/Verschiebe-Ebenen anders verstanden als Du gemeint hattest.

Gruss
Biber
Bitte warten ..
Mitglied: 6741
15.03.2007 um 19:31 Uhr
wie du es postetes siehts gut aus, aber ich möchte ordner2 auf die Höhe von Ordner 1 verschoben haben. Daten1 und Daten2 sind eindeutige Namen.

gruß
Bitte warten ..
Mitglied: Biber
15.03.2007 um 19:53 Uhr
Na dann ist doch noch viel weniger Aufwand...
01.
>md d:\daten1\daten2\ordner1\ordner2 
02.
>for /D %e in (d:\Daten1\daten2\*) do @(for /d %z in (%e\*.) do @move "%z" "%~dpe") 
03.
 
04.
(=19:52:04  F:\=) 
05.
>dir d:\daten1 /b /s 
06.
d:\daten1\daten2 
07.
d:\daten1\daten2\ordner1 
08.
d:\daten1\daten2\ordner2
Gruss
Biber
Bitte warten ..
Mitglied: 6741
16.03.2007 um 18:37 Uhr
hi biber,

die dos box sagt, system kann die angegebene datei nicht finden ...

also ordner1 kann 100 unterschiedliche namen haben und ordner 2 auch .. es gibt keinen zusammenhang ..

gruß ins we
Bitte warten ..
Mitglied: Biber
16.03.2007 um 18:48 Uhr
Na fwd,

das muss ich auch erstmal überschlafen - oder mal andere ranlassen.
Ich mach jetzt auch erstmal Wochenende,

Gruss
Biber
Bitte warten ..
Mitglied: bastla
16.03.2007 um 23:58 Uhr
Hallo firewalldevil!

Nur so eine Frage: Sagt die "DOS-Box" vielleicht auch, dass die Ordner trotz der irritierenden Meldungen verschoben wurden?

Wie auch immer, versuch es vielleicht damit:
01.
@echo off 
02.
for /f "delims=" %%e in ('dir "%~1" /b /ad') do ( 
03.
	for /f "delims=" %%z in ('dir /b /ad "%~1\%%e"') do move "%~1\%%e\%%z" "%~1"  
04.
	rd "%~1\%%e" 2>nul 
05.
)
Aufruf (wenn als "C:\Scripts\LiftFolders.bat") gespeichert:
01.
C:\Scripts\LiftFolders.bat "D:\Daten1\Daten2"
@Biber
Nach meinen Versuchen mit dem Schalter "/D" scheint es so, als würden die nach oben verschobenen Ordner ein weiteres Mal behandelt (seltsam genug), wobei dies, wenn der Name dieser Ordner Leerzeichen enthält, für jeden Namensbestandteil einzeln versucht wird - also Verschieben klappt, aber danach die ganzen Fehlermeldungen "Das System kann die angegebene Datei nicht finden." ...

Schönes WE
bastla
Bitte warten ..
Mitglied: 6741
18.03.2007 um 20:01 Uhr
hi bastla ...

das Script liegt auf c:\scritps und die Ordner auf d:\daten ...

ich erkenne nicht den Zusammenhang das das Script d:\ ansteuert ... kannst du mir bitte das Script erklären ...

Gruß und Danke
Bitte warten ..
Mitglied: bastla
18.03.2007 um 20:13 Uhr
Hallo firewalldevil!

Das Script ist etwas allgemeiner gehalten und erwartet den zu bearbeitenden Ordner als Argument beim Aufruf - also musst Du es, wie oben beschrieben, starten mit:
01.
C:\Scripts\LiftFolders.bat <b>"D:\Daten1\Daten2"</b>
Um es gegen einen Aufruf ohne Argument abzusichern, könntest Du noch folgende Zeile nach "@echo off" einfügen:
01.
if [%1]==[] echo Bitte Startordner beim Aufruf angeben! & goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: bastla
18.03.2007 um 20:53 Uhr
Hallo firewalldevil!

Vielleicht ist es Dir so sympathischer:
01.
@echo off 
02.
set "Ordner=D:\Daten1\Daten2" 
03.
for /f "delims=" %%e in ('dir "%Ordner%" /b /ad') do ( 
04.
    for /f "delims=" %%z in ('dir /b /ad "%Ordner%\%%e"') do move "%Ordner%\%%e\%%z" "%Ordner%"  
05.
    rd "%Ordner%\%%e" 2>nul 
06.
)
Jetzt kannst Du wieder durch einfachen Aufruf der Batch-Datei starten.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Inhalt von Ordner Kopieren und damit Inhalt von Ordner2 überschrieben

gelöst Frage von sigisigiBatch & Shell2 Kommentare

Hallo Zusammen Ich habe ein Problem mit dem kopieren von Dateien. Ziel: Der Inhalt von "zwbu2wua.default" ohne Ordner namen ...

Exchange Server

Mail automatisch in öffentlichen Ordner verschieben.

gelöst Frage von has.andExchange Server3 Kommentare

Hy zusammen, folgende Problemstellung: Wir bekommen von einer GLT-Station Alarm/info/etc.-Mails an eine definierbare Adresse gesendet. Diese Mails sollen dann ...

Batch & Shell

Automatisch täglich einen Ordner erstellen und in diesem dann Bilder vom selben Datum kopieren bzw. verschieben

gelöst Frage von attaulhaiahmadBatch & Shell9 Kommentare

Hi! Also es soll täglich ein Ordner erstellt werden und in diesem dann die Bilder vom selben Datum kopiert ...

Batch & Shell

Ordner per Batch verschieben, Datei kopieren

gelöst Frage von Shape.ShifterBatch & Shell2 Kommentare

Guten Abend :) Ich möchte mein Backup etwas anpassen und muss dafür viele Ordner verschieben und jeweils eine Datei ...

Neue Wissensbeiträge
Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 4 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 7 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 2 TagenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Heiß diskutierte Inhalte
C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++33 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Batch & Shell
Powershell: Im AD nach Comutern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell21 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
Frage von Bommi1961Batch & Shell20 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...