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, 3732 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

Cronjob - automatisch Inhalt einer SQL-Tabelle ändern

Frage von d4shoerncheNBatch & Shell1 Kommentar

Moin, ich brauche Mal Hilfe von den Entwicklern hier. Ich benötige ein Cronjob, welches ein Script ausführt mit folgender ...

Microsoft Office

Excel: Zellenhöhe soll sich automatisch dem Inhalt anpassen

gelöst Frage von veraxelMicrosoft Office7 Kommentare

Hallo Experten :-) Ich habe in einer Exceltabelle eine Spalte mit fester Breite. Der Inhalt der einzelnen Zellen dieser ...

Windows Tools

PDF mit Inhalt von Labeln, trennen und automatisch bennen

Frage von BotpennerWindows Tools3 Kommentare

Hallo Freunde, ich habe eine PDF-Datei in der sich Versandlabel´s befinden. Leider bekommen wir immer nur eine Datei wo ...

Outlook & Mail

Outlook Mails Inhalt In Access Automatisch übertragen, wie geht das?

Frage von Knkor18Outlook & Mail2 Kommentare

Hallo Lieber Administrator User, Ich möchte zunächst einmal dieses Forum für Ihre Hilfreichen Antworten der sehr engagierten User bei ...

Neue Wissensbeiträge
Windows 10

Windows 10 kann XPS erzeugen aber nicht anzeigen ????

Erfahrungsbericht von Deepsys vor 1 TagWindows 101 Kommentar

Heute schickt mir ein Kollegen eine E-Mail mit einer XPS-Datei vom Kunden im Anhang und fragt wie er diese ...

Exchange Server

1und1 IONOS: Probleme beim Mailversand mit Exchange

Information von reksierp vor 1 TagExchange Server3 Kommentare

Hallo, seit Do, 17.1.19 etwa Mittags nimmt 1und1 IONOS keine Mails mehr über den Standard-Port SMTP 25 an. Nachdem ...

LAN, WAN, Wireless

Cisco Mikrotik VPN Standort Vernetzung mit dynamischem Routing

Anleitung von aqui vor 2 TagenLAN, WAN, Wireless

1. Allgemeine Einleitung Das nachfolgende Tutorial ist eine Fortführung der hier bei Administrator.de schon bestehenden VPN Tutorials und beschreibt ...

Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 3 TagenWindows Mobile1 Kommentar

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Wo lässt sich das Gateway in der FRITZ!Box 7360 einstellen?
gelöst Frage von OssabowLAN, WAN, Wireless18 Kommentare

Hallo all, nach gründlicher Suche scheine ich der einzige zu sein der das Problem hat (macht micht schon mal ...

Windows Server
MSSQL Backup in Form von .sql einspielen
Frage von janosch12Windows Server14 Kommentare

Guten Morgen, wir verwenden das Tool SQLandFTPBackup ( ) zum sichern einiger MSSQL Datenbanken. Nun sichert das Toll die ...

Windows Server
Sicherung Domain Controller
gelöst Frage von Monto1Windows Server14 Kommentare

Hallo zusammen, wie sichert Ihr den Domain Controller? Selbst, wenn zwei parallel laufen, ist eine Sicherung doch mal nützlich. ...

Microsoft Office
Office 2016 oder Office 2019
Frage von PeterzMicrosoft Office13 Kommentare

Hallo zusammen, wir müssen unser Office von 2010 auf eine neuere Version Umstellen. Jetzt stellt sich die Frage, ob ...