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

Frage Entwicklung Batch & Shell

GELÖST

Verschiedenen Unterverzeichnissen neues Wurzelverzeichnis geben?

Mitglied: hannesmcmaster

hannesmcmaster (Level 1) - Jetzt verbinden

04.08.2010 um 21:44 Uhr, 3090 Aufrufe, 9 Kommentare

Hallo zusammen!

Ich versuche mit move.exe und/oder xcopy ca. 300 Unterverzeichnisse (deren Unterverzeichnisse und die Dateien darin) in ein neues Stammverzeichnis zu verschieben. Funktioniert leider nicht so ganz...

Meine Verzeichnisstruktur ist beispielsweise:

D:\CD001\Jackson\Jahr_2000\Singles\Lied1.mp3
D:\CD001\Metallica\Jahr_1998\LP\Lied4.ac3
D:\CD001\Greenday\Jahr_1996\Concert\Lied2.ogg

Daraus soll werden:

D:\CD001\Jahr_2000\Singles\Lied1.mp3
D:\CD001Jahr_1998\LP\Lied4.ac3
D:\CD001\Jahr_1996\Concert\Lied2.ogg


Wie läßt sich das anstellen? Mit bestem Dank,
-h-
Mitglied: mathe172
04.08.2010 um 22:38 Uhr
Hallo!

Ist die Struktur genau/immer so? Also mit CD-Name\Band\Jahr_XXXX\album(oder was das ist)\Lied ?

Mathe172
Bitte warten ..
Mitglied: bastla
04.08.2010 um 22:53 Uhr
Hallo hannesmcmaster und willkommen im Forum!

Grundsätzlich sollte das etwa so gehen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\CD001" 
03.
 
04.
pushd "%Ordner%" 
05.
for /f %%i in ('dir /b /ad 2^>nul') do for /d %%a in ("%%i\*.*") do echo xcopy /e "%%a" "%%~nxa\" && echo rd /s /q "%%a" 
06.
popd
Solange (in der Testphase) die beiden "echo" in Zeile 5 stehen, werden die Befehle nur angezeigt ...

Kurz zum Ablauf:
Zunächst wird in den vorgegebenen Ordner ("D:\CD001") gewechselt - damit werden die Pfade kürzer und einfacher zu verwenden.
Die erste "for"-Schleife geht die erste Unterordnerebene durch ("Jackson", "Metallica", "Greenday"). Die "for /f"-Schleife hat hier gegenüber dem "for /d" den Vorteil, dass sozusagen am Beginn der Verarbeitung ein "Schnappschuss" der vorhandenen Ordner gemacht wird und während des Ablaufs (durch das "Nach-oben-verschieben") neu hinzukommende Ordner nicht nochmals verarbeitet werden.
Die zweite Schleife ermittelt alle Unterordner des jeweiligen Ordners lt erster Schleife und kopiert diese (samt allen Unterordnern, selbst wenn diese leer sein sollten) in den Ausgangsordner, wobei der Zielordner sich aus dem Namen des Unter-(Unter-)Ordners (zB "Jahr_2000") ergibt. Während "move" scheitern würde, wenn dieser Zielordner bereits existiert, kopiert "xcopy" auch in bestehende Ordner.
Wenn der Kopiervorgang ohne Fehler beendet wurde (und nur dann - deshalb Verknüpfung mit "&&"), kann der Ordner rückstandsfrei entsorgt werden.
Der Ordnung halber wird nach Durchlaufen aller Schleifen der Wechsel in den Basisordner ("D:\CD001") wieder rückgängig gemacht.

Die Unterordner der ersten Ebene ("Jackson", "Metallica", "Greenday") bleiben übrigens noch bestehen, auch wenn sie völlig leer sein sollten - um solche "Überreste" zu entfernen, würde ich im Anschluss eine weitere Schleife über alle Ordner verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: hannesmcmaster
04.08.2010 um 23:14 Uhr
Hallo,

danke für die schnelle Hilfe, leider passiert bei mir gar nichts. Habe den Code als .bat gespeichert und mit Administrator-Rechten über cmd.exe gestartet. Nur bleibt alles schwarz.

@mathe172: Die Unterordner müssen nicht Jahr_XXX heißen, sondern können beliebige Namen haben. Wichtig ist, dass die Verzeichnisstruktur erhalten bleibt, nur der jeweils 1. Ordner des gemeinsamen Unterverzeichnisses (CD001 hier) "gelöscht" oder "übersprungen" wird.
Bitte warten ..
Mitglied: bastla
04.08.2010 um 23:18 Uhr
Hallo hannesmcmaster!

Dann mach mal aus dem "echo off" in der ersten Zeile ein "echo on" und schau Dir an, was der Batch so zu tun versucht ...

Grüße
bastla
Bitte warten ..
Mitglied: 60730
04.08.2010 um 23:58 Uhr
Servus,

[1/2 OT]
naja ganz ehrlich - warum du aus einer Struktur, die dir erlaubt den Interpreten zu erkennen - eine stricken willst - die dir nur den Überblick nach Jahren gestattet - versteh ich nicht.
[/1/2 OT]
passen wenigstens die Id3 Tags?

Denn dann würde ich an deiner Stelle anhand der Tags die Sortierung vornehmen.

Gruß
Bitte warten ..
Mitglied: hannesmcmaster
05.08.2010 um 10:06 Uhr
Hallo nochmal,

@TimoBeil:
Die Ordner müssen nicht zwangsläufig nur Musik beinhalten.


Ohne Echos sieht die Ausgabe wie folgt aus:

n:\TEST>for /F %i in ('dir /b /ad 2>nul') do for / %a in ("%i\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"

n:\TEST>for / %a in ("Neuer\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"

n:\TEST>for / %a in ("Neuer\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"

n:\TEST>for / %a in ("Neuer\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"

n:\TEST>popd



die Verzeichnisstruktur war diesmal:

N:\Test\Neuer Ordner 1\Unterordner1\Unter Unter Ordner\Datei-A
N:\Test\Neuer Ordner 2\Unterordner2\Unter Unter Ordner\Datei-B
N:\Test\Neuer Ordner 3\Unterordner3\Unter Unter Ordner\Datei-C

Vielleicht liegt es am langen Dateinamen?

Grüße
Bitte warten ..
Mitglied: bastla
05.08.2010 um 10:47 Uhr
Hallo hannesmcmaster!

Sorry - da fehlte noch ein kleines, aber wesentliches Detail ; so sollte es dann besser gehen:
for /f "delims=" %%i in ('dir /b /ad 2^>nul') do for /d %%a in ("%%i\*.*") do echo xcopy /e "%%a" "%%~nxa\" && echo rd /s /q "%%a"
Grüße
bastla
Bitte warten ..
Mitglied: hannesmcmaster
05.08.2010 um 18:47 Uhr
Hi,

also, ich weiß zwar nicht wie, aber es funktioniert.
Top! Besten Dank!!
Bitte warten ..
Mitglied: bastla
05.08.2010 um 19:39 Uhr
Hallo hannesmcmaster!

Zum Wie (abgesehen davon, was oben schon angeführt ist): Durch den Zusatz "delims=" wird festgelegt, dass es kein Trennzeichen innerhalb der Ordnernamen gibt (defaultmäßig wird bei jedem Leerzeichen getrennt), wodurch die Namen jetzt richtig "am Stück" gelesen und verwendet werden ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Namen der Unterverzeichnisse in verschiedene Variable einlesen mittels Batch
gelöst Frage von gerry56Batch & Shell8 Kommentare

Hallo und ein schönes Wochenende. Ich merke leider, daß ich schon länger nichts mehr mit DOS (Batch) erstellt habe. ...

Batch & Shell
Namensvergleich von Unterverzeichnisse
gelöst Frage von BlattlausOGBatch & Shell20 Kommentare

Hallo allerseits, ich bin neu in diesem Forum und möchte an erster Stelle alle recht herzlich Grüßen :) Ein ...

Windows 7
Hilfe verschiedene Bluescreen, neues system
Frage von dx1900Windows 75 Kommentare

Hallo, Ich habe mir einen neuen Computer zusammengestellt und bekomme nun bei Windows 7 und 8 jeweils 64-Bit immer ...

Batch & Shell
Programm in allen Unterverzeichnissen ausführen
gelöst Frage von RotnasenkaterBatch & Shell8 Kommentare

Servus, liebe Gemeinde! Da mir hier schonmal so freundlich und kompetent geholfen wurde, wende ich mich nochmals mit einer ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 9 StundenLinux1 Kommentar

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
gelöst Frage von Windows10GegnerNetzwerkgrundlagen24 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit24 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...