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

Files aus Unterordner in drüberliegenden Orner verschieben

Frage Entwicklung Batch & Shell

Mitglied: Armin1893

Armin1893 (Level 1) - Jetzt verbinden

14.08.2012 um 10:22 Uhr, 2163 Aufrufe, 7 Kommentare

Hallo zusammen,

Meine Ordnerstruktur sieht folgendermaßen aus :

Ordner1\frame1\file1.xxx
file2.xxx
file3.xxx
Ordner2\frame1\file1.xxx
file2.xxx
file3.xxx
Ordner3\frame1\file1.xxx
file2.xxx
file3.xxx

Diese Files sollen möglichst per Batch einfach in den jeweils darüberliegenden Ordner verschoben werden.

Hab leider keinen Plan, wäre für jede Hilfe dankbar.

Im Voraus besten Dank.

Grüsse - Armin
Mitglied: bastla
14.08.2012, aktualisiert um 11:07 Uhr
Hallo Armin1893!

Nur zur Sicherheit: Die "file1.xxx" sollen in die "frame1"-Ordner und auch die "file2.xxx" und "file3.xxx" sollen eine Ordnerebene höher [Edit2] (oder liegen die ohnehin auch in "frame1" - dann würde sich die Problemstellung ja auf "verschiebe alle Dateien aus dem jeweiligen Unterordner "frame1" eine Ordnerebene nach oben" reduzieren) [/Edit2]?

[Edit] Hinsichtlich "file2.xxx" und "file3.xxx" würde es zB beim Verschieben aus "Ordner2" zu einer Namenskollisionen kommen, da ja schon die gleichnamigen Dateien aus "Ordner1" vorhanden wären - was sollte dann passieren?

Und: Gibt es nur die genannten Dateien, bzw sollen alle gefundenen Dateien verschoben werden? [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: der-blob
14.08.2012 um 11:17 Uhr
Hallöchen, also ich habe ihn so verstanden das aus:

Ordner1\frame1\*.* --> Ordner1\*.* werden sollen.

Deshalb würde es (soweit ich es sehen kann) zu keiner kollision kommen, nur wenn noch ein weiter Ordner Ordner1\frame2\ wär, und in diesem die selbe benamung wie frame1 wär.


also ich hätte dies im Angebot.. Es werden ALLE dateien welche in Frame1 liegen nach Ordner1/2/3.... verschoben.

01.
@echo off 
02.
setlocal enabledelayedexpansion 
03.
cd /d %~dp0 
04.
set ausgang=%cd% 
05.
 
06.
for /f %%a in ('dir /b /a:d') do ( 
07.
set NachOrdner=%ausgang%\%%a 
08.
 
09.
for /f %%i in ('dir !NachOrdner! /b /a:d') do ( 
10.
set VonOrdner=!NachOrdner!\%%i 
11.
echo move !VonOrdner!\*.* !NachOrdner! 
12.
echo rd !VonOrdner!  
13.
 
14.
15.
)
(das Script liegt dort wo Ordner1 Ordner2... liegen.)
Bitte warten ..
Mitglied: bastla
14.08.2012, aktualisiert um 11:53 Uhr
@der-blob

Wenn ich das auch so ähnlich interpretiere (und inzwischen tendiere ich dazu), würde ich aber einfach direkt in CMD
for /d  %i in ("D:\Ausgangsordner\Ordner*") do move "%i\frame1\*.xxx" "%i\"
bzw für alle Unterordner von "D:\Ausgangsordner"
for /d  %i in ("D:\Ausgangsordner\*") do move "%i\frame1\*.xxx" "%i\"
verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: Armin1893
16.08.2012 um 10:47 Uhr
Hallo bastla und der-blob,

komm erst jetzt dazu zu antworten, herzlichen Dank für Eure schnelle und präzise Antworten.
Unglaublich, was man mit Eurem Wissen alles machen kann. Funktioniert suppperrrr......

Ergänzende Frage : zum besseren Verständnis würde gerne die Syntax verstehen. Wo kann ich das evtl. nachlesen ?

Danke nochmal, Ihr seid dir Größten !!!

Grüße - Armin
Bitte warten ..
Mitglied: Armin1893
16.08.2012 um 10:56 Uhr
Hallo nochmal,

ein kleines Problem hab ich noch

Wenn ein Ordner ein Leerzeichen enthält, funktionerts leider nicht. Gibt bestimmt auch dafür ne Lösung, oder...

Grüasle - Armin

Beispiel :

ORDNER1/FRAME1 funktionert
ORDNER2/FRAME1 funktionert
ORDNER 3/FRAME1 funktionert nicht !!!
ORDNER4/FRAME1 funktionert
Bitte warten ..
Mitglied: bastla
16.08.2012, aktualisiert um 11:31 Uhr
Hallo Armin1893!
Wenn ein Ordner ein Leerzeichen enthält, funktionerts leider nicht
Kann sich eigentlich nur auf die Version von der-blob beziehen - versuch es mit dieser Fassung davon:
01.
@echo off 
02.
setlocal enabledelayedexpansion 
03.
cd /d "%~dp0" 
04.
set "ausgang=%cd%" 
05.
 
06.
for /f "delims=" %%a in ('dir /b /a:d') do ( 
07.
    set "NachOrdner=%ausgang%\%%a" 
08.
 
09.
    for /f "delims=" %%i in ('dir "!NachOrdner!" /b /a:d') do ( 
10.
        set "VonOrdner=!NachOrdner!\%%i" 
11.
        echo move "!VonOrdner!\*.*" "!NachOrdner!" 
12.
        echo rd "!VonOrdner!" 
13.
 
14.
15.
)
Zur Erklärung meines Ansatzes:
Mit der "for /d"-Schleife werden alle Ordner, die dem Suchmuster ("D:\Ausgangsordner\Ordner*") entsprechen, durchlaufen und deren Pfad jeweils in "%i" zur Verfügung gestellt - damit kann dann der Befehl
move "%i\frame1\*.xxx" "%i"
also:Verschiebe alle *.xxx-Dateien des Unterordners "frame1" von "%%i" nach "%%i" für jeden gefundenen Ordner durchgeführt werden ...

Grüße
bastla
Bitte warten ..
Mitglied: Armin1893
16.08.2012 um 12:04 Uhr
Hallo bastla,

hast natürlich recht, bezog sich auf den Ansatz von der-blob.

Deine Fassung funktioniert jetzt auch bei Ordnern mit Leerzeichen.

Ganz herzlichen Dank für die schnelle Antwort und deine ergänzende Erklärung des Ansatzes. Damit verstehs auch ich ein wenig.

Danke + Grüsse
Armin
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...