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

Dateien suchen und Ordner verschieben

Frage Microsoft Windows Tools

Mitglied: rocky2k

rocky2k (Level 1) - Jetzt verbinden

16.07.2012, aktualisiert 17:40 Uhr, 4250 Aufrufe, 22 Kommentare

Moin,

ich möchte folgendes und ich hoffe ich bin nicht der 1000ste mit dieser Frage :D

Dateien anhand einer beliebigen Datei-Extension auf der lokalen Platte (z.B. Laufwerk D: ) suchen.
Dann den nur jeweils "letzten" Ordner in der Hierarchie an einen anderen (beliebigen) Ort (z.B. Laufwerk E: ) verschieben (natürlich inklusive aller Dateien innerhalb dieses Ordners).
Ich will natürlich nicht erst in die Ordnerstruktur hineinmüssen...es soll selbständig rekursiv die Platte durchforsten
Der automatisch erzeugte Zielordnername soll natürlich dem "letzten" Ordnernamen entsprechen...


Also z.B. "finde *.abc auf D:"

(gefunden) von hier
d:\ordner1\ordner2\ordner3\datei001.abc

(verschoben) nach hier
e:\ordner3\datei001.abc

Ich hoffe ich konnte es einigermaßen darstellen ;)

Gibt es dafür ein Tool? (ich konnte jedoch bislang kein geeignetes finden, alle Such-Move-Tools die ich bislang finden konnte, konnten das irgendwie nicht so...)


ciao andy

Mitglied: bastla
16.07.2012 um 21:33 Uhr
Hallo rocky2k!

Kannst Du ausschließen, dass es etwa in "ordner1" oder "ordner2" auch Dateien vom Typ ".abc" gibt, bzw falls nicht, wie soll mit diesen Ordnern verfahren werden?

Außerdem: Kann etwa auch ein Ordner "D:\ordner4\ordner3" existieren, und wenn ja, sollen dann die Dateien in den vorher schon erstellten Ordner "e:\ordner3" verschoben werden, und wenn ja, kann es dort zu Kollisionen von gleichnamigen Dateien kommen?

Grüße
basla
Bitte warten ..
Mitglied: rocky2k
16.07.2012 um 22:37 Uhr
Hallo basla,

nun vlt noch als Info:

die namen "ordner1" "ordner2" etc. sollten nur die verzeichnistiefe symbolisieren, also die namen sind grundsätzlich völlig beliebig. im allgemeinen sind die ordner über dem "letzten" auch leer.
evtl. kann durch rekursion immer der "letzte" ordner der die gesuchten dateien enthält als operationsziel herangezogen werden -> durch neuerliches aufrufen der operation könnte man auch dateien in den übergeordeten ordnern finden und diese ordner ebenso verschieben...

ciao andy
Bitte warten ..
Mitglied: bastla
16.07.2012, aktualisiert um 23:08 Uhr
Hallo rocky2k!
die namen "ordner1" "ordner2" etc. sollten nur die verzeichnistiefe symbolisieren, also die namen sind grundsätzlich völlig beliebig.
Dass es sich dabei nur um Beispiele handelt, war mir schon klar - es bleibt aber trotzdem die Frage nach gleichnamigen Ordnern / Dateien in unterschiedlichen Pfaden offen ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
16.07.2012 um 23:08 Uhr
... aber um zumindest einmal einen Überblick zu bekommen, könntest Du folgenden Batch testen:
01.
@echo off & setlocal 
02.
set "Suche=D:\*.abc" 
03.
 
04.
set "Ordnerliste=%temp%\Ordner.txt" 
05.
>"%Ordnerliste%" type nul 
06.
 
07.
for /f "delims=" %%i in ('dir /s/b/a-d "%Suche%"') do ( 
08.
    set "Ordner=%%~dpi" 
09.
    setlocal enabledelayedexpansion 
10.
    findstr /ic:"!Ordner:\=\\!" "%Ordnerliste%">nul||>>"%Ordnerliste%" echo !Ordner! 
11.
    endlocal 
12.
13.
sort /r "%Ordnerliste%" 
14.
pause
Die gefundenen Ordner könnten dann in dieser Reihenfolge (also jeweils vom Ende des Pfades her) verarbeitet werden ...

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

in der regel sind die zu suchenden dateien lediglich im letzten ordner der hierarchie. aber wie ich anmerkte könnte man die operation immer nur auf den "letzten" ordner anwenden. sollte sich beim ordnerverschieben zeigen dass es zwei ordner mit selben namen gibt, wäre eine frage nach dem motto "überschreiben, umbennen, abbrechen" denkbar (aber das wäre nur nice to have) eine meldung "schon vorhanden" oder so genügt fürs erste ;)

ciao andy
Bitte warten ..
Mitglied: bastla
16.07.2012, aktualisiert um 23:48 Uhr
Hallo rocky2k!

Soferne der obige Ansatz vernünftige Ergebnisse liefert, könntest Du folgenden Batch testen:
01.
@echo off & setlocal 
02.
set "Suche=D:\*.abc" 
03.
:: Zielangabe immer mit abschließendem "\" schreiben! 
04.
set "Ziel=E:\" 
05.
 
06.
set "Ordnerliste=%temp%\Ordner.txt" 
07.
>"%Ordnerliste%" type nul 
08.
 
09.
for /f "delims=" %%i in ('dir /s/b/a-d "%Suche%" 2^>nul') do ( 
10.
    set "Ordner=%%~dpi" 
11.
    setlocal enabledelayedexpansion 
12.
    findstr /ic:"!Ordner:\=\\!" "%Ordnerliste%">nul||>>"%Ordnerliste%" echo !Ordner! 
13.
    endlocal 
14.
15.
md "%Ziel%" 2>nul 
16.
for /f "delims=" %%i in ('sort /r "%Ordnerliste%"') do for /f "delims=" %%o in ("%%i\dummy\..") do ( 
17.
    if not exist "%Ziel%%%~nxo" ( 
18.
        echo move "%%~dpi..\%%~nxo" "%Ziel%%%~nxo" >nul 
19.
    ) else ( 
20.
        echo "%Ziel%%%~nxo" bereits vorhanden! 
21.
22.
23.
pause
Die entscheidende Zeile 18 ist durch das "echo" noch "entschäft" - solange das dort steht, wird der Befehl zum Verschieben des jeweiligen Ordners nur angezeigt ...

Das etwas ungewöhnlich aussehende "%%~dpi..\%%~nxo" dient übrigens dazu, den "\" am Ende des jeweiligen Pfades aus der Ordnerliste zu eliminieren.

Grüße
bastla
Bitte warten ..
Mitglied: rocky2k
17.07.2012 um 01:15 Uhr
Hallo bastla,

many thx schonmal für das batchlisting !

werde ich mir sodann mal näher anschauen...

ciao andy
Bitte warten ..
Mitglied: TsukiSan
17.07.2012 um 16:10 Uhr
@bastla,

mal nur so eine Frage am Rande:
Inwieweit kann man sicherstellen, dass immer der letzte Ordner in richtiger Reihenfolge angegeben wird? Oder anders-her-rum: Durchstöbert ein CMD wirklich von "oben" nach "unten"?
Man sieht sehr oft, dass bei der Windows-Suchfunktion die Reihenfolge der Ordner nicht unbedingt dem entspricht, wie man selber meint, dass es die "richtige" Reihenfolge ist.

Als Beispiel:
Ich habe einen kleinen Audioplayer, mit dem ich eine ganze Partition/ganze Partitionen nach Audio-Dateien durchsuchen kann und alle gefundenen Dateien mir in meine Playlist einträgt. Das entspricht nicht immer der Reihenfolge (auch bei den Ordnern), wie ich es erwartet hätte.
(da sind allerdings VB6 und VBS im Spiel)

Gruss
Tsuki
Bitte warten ..
Mitglied: rocky2k
17.07.2012 um 16:32 Uhr
Hallo bastla,

nun mal zum Test. Hab folgenden Test-Pfad + Dateien:

D:\_test_\o1\o2\file1.abc
D:\_test_\o1\o2\file2.abc

Dein 1. batch liefert mir am Ende (und so stehts auch in der ...Ordner.txt) den Pfad D:\_test_\o1\o2\ soweit so gut
Dein 2. batch zeigt überhaupt nichts außer "Drücken Sie eine beliebige Taste..." hm?

die echos kommen irgendwie nicht raus -> im 1. batch vermutlich nur deshalb schon, weil noch ein "sort" steht, weil ohne die sort Zeile kommt nix...(?)

Ist Zeile 15 so korrekt? -> ich musste zum testen nämlich in Zeile 4 den Zielordner manuell auf "d:\o2\" setzen...
Auch ein entfernen des echo in Zeile 18 brachte im Ablauf dann ein "Zugriff verweigert"

ach ja:
führe die cmd-shell als admin aus



ciao andy
Bitte warten ..
Mitglied: bastla
17.07.2012, aktualisiert 18.07.2012
Hallo Tsuki!
Inwieweit kann man sicherstellen, dass immer der letzte Ordner in richtiger Reihenfolge angegeben wird?
Dazu dient die am Ende durchgeführte Sortierung - da absteigend sortiert wird, wird immer der jeweils längste Pfad (= der am weitesten "unten" liegende Ordner) zuerst verarbeitet ...

Das lässt sich natürlich auch nach VB/VBS übertragen, indem zuerst alle relevanten Pfade ermittelt und dann entsprechend sortiert werden ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
17.07.2012, aktualisiert um 17:18 Uhr
Hallo rocky2k!

Hinsichtlich der fehlenden Ausgabe bei Batch 2: Ich hatte vorweg schon das Verschieben getestet und die jeweilige Meldung
        1 Datei(en) verschoben.
per ">nul" unterdrückt - was natürlich bei einem "echo" davor dann eher kontraproduktiv ist - daher einfach am Ende der Zeile 18 ">nul" wieder entfernen, um die Ausgabe zu sehen ...
Ist Zeile 15 so korrekt?
Weshalb nicht? Es wird der Zielordner (in den dann alle Unterordner sollen) erstellt, oder, wenn schon vorhanden, die resultierende Fehlermeldung
Ein Unterverzeichnis oder eine Datei mit dem Namen "D:\o2" existiert bereits.
mit "2>nul" unterdrückt.
ich musste zum testen nämlich in Zeile 4 den Zielordner manuell auf "D:\o2\" setzen...
Natürlich musst Du angeben, wohin die Ordner sollen (wobei es vermutlich keine gute Idee ist, wenn der Zielordner im "Quellbereich" (es wird ja ab D:\ gesucht) liegt ...
Zum "Zugriff verweigert" kann ich nicht viel sagen - bei meinem Test funktioniert der gepostete Batch (mit nicht überschneidenden Quell-/Zielpfaden) ...

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
17.07.2012 um 17:25 Uhr
Hallo bastla,

naja, bei meinem kleinen Audioplayer ist es relativ Wurscht, wie er die Dinger abspielt, weil er sie eh per Zufall abspielen soll.

Unser rocky2K darf sich dann am besten noch eine Sortierroutine einbauen. Wir wissen ja nicht, um wieviele Ordner sich es rekursiv handeln wird
Bubble-Sort ist dein Freund

Nochmals Danke und viele Grüsse

Tsuki
Bitte warten ..
Mitglied: bastla
17.07.2012 um 19:23 Uhr
Hallo Tsuki!
Unser rocky2K darf sich dann am besten noch eine Sortierroutine einbauen.
Zeile 16?

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
18.07.2012 um 00:35 Uhr
Hallo bastla,

Zeile 16?

hatte ich übersehen. Sorry! ist wohl schon ein bisschen spät

Viele Grüße

Tsuki
Bitte warten ..
Mitglied: bastla
18.07.2012 um 00:37 Uhr
Hallo Tsuki!
ist wohl schon ein bisschen spät
In welcher Zeitzone bist Du denn derzeit?

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
18.07.2012 um 03:51 Uhr
Hallo bastla,

In welcher Zeitzone bist Du denn derzeit?

Sternzeit 42679,5

Viele Grüsse

Tsuki
Bitte warten ..
Mitglied: bastla
18.07.2012 um 09:50 Uhr
[OT] Hallo Tsuki!

Obwohl meine Frage ausnahmsweise einmal ernst gemeint war, wären 6 Stunden Zeitverschiebung durchaus dazu angetan, die Konzentration etwas zu beeinträchtigen ...

Grüße
bastla
[/OT]
Bitte warten ..
Mitglied: TsukiSan
18.07.2012 um 10:08 Uhr
[OT]Hallo bastla,

hast du ja schnell rausbekommen, was ich meinte

Heute bin ich wieder etwas "wacher". Mal sehen, wie lange

Viele Grüße

Tsuki
[/OT]
Bitte warten ..
Mitglied: rocky2k
20.07.2012 um 15:16 Uhr
Hallo Bastla,

also irgendwie steh ich jetzt aufm Schlauch.

Bei einem neuen Test unter WinXP wird die Ordner.txt zwar angelegt, diese bleibt aber völlig leer...

Ich habe als Test auf
D: die Ordnerstruktur D:\o1\o2\o3\o4
und in o4 die 3 Files f1.abc, f2.abc, f3.abc

set im batch:
set "Suche=D:\*.abc"
set "Ziel=C:\"


Auf C: (als Test) soll ja wie gesagt der Ordner o4 mit seinem Inhalt hinverschoben werden (also Ergebnins soll sein C:\o4\*.abc)


Muss ich noch was wissen welche Systemvoraussetzungen ich für Deinen obigen batch brauche ?


ciao andy
Bitte warten ..
Mitglied: bastla
20.07.2012 um 16:16 Uhr
Hallo rocky2k!

Inzwischen habe ich das auch unter XP mit 2 verschiedenen Laufwerken getestet (vorher hatte ich nur von "D:\Quelle\*.abc" nach "D:\Ziel\" verschieben lassen) und kann die Meldung
Zugriff verweigert
bestätigen - ein Verschieben auf ein anderes Laufwerk ist mit "move" (auch mit Admin-Rechten) nicht möglich (hatte ich auch schon mal unter VBS festgestellt).

Als Workaround würde sich daher kopieren und löschen anbieten:
01.
@echo off & setlocal 
02.
set "Suche=D:\*.abc" 
03.
:: Zielangabe immer mit abschließendem "\" schreiben! 
04.
set "Ziel=C:\" 
05.
 
06.
set "Ordnerliste=%temp%\Ordner.txt" 
07.
>"%Ordnerliste%" type nul 
08.
 
09.
for /f "delims=" %%i in ('dir /s/b/a-d "%Suche%" 2^>nul') do ( 
10.
    set "Ordner=%%~dpi" 
11.
    setlocal enabledelayedexpansion 
12.
    findstr /ic:"!Ordner:\=\\!" "%Ordnerliste%">nul||>>"%Ordnerliste%" echo !Ordner! 
13.
    endlocal 
14.
15.
md "%Ziel%" 2>nul 
16.
for /f "delims=" %%i in ('sort /r "%Ordnerliste%"') do for /f "delims=" %%o in ("%%i\dummy\..") do ( 
17.
    echo Verarbeite "%%i" 
18.
    if not exist "%Ziel%%%~nxo" ( 
19.
        xcopy /ehk "%%i*" "%Ziel%%%~nxo\">nul && rd /s /q "%%i" 
20.
    ) else ( 
21.
        echo "%Ziel%%%~nxo" bereits vorhanden! 
22.
23.
24.
pause
Grüße
bastla
Bitte warten ..
Mitglied: rocky2k
20.07.2012 um 17:21 Uhr
Hallo Bastla,

ja nun wird gemoved wie gewünscht... ABER:
Auf meinem aktuellen XP System will sich die Ordner.txt nicht füllen...ich hatte zum testen der batch den Such-Pfad manuell in die Ordner.txt eintragen müssen...seltsam...
Das Zielsystem unter Win7 - dort füllte sich die Ordner.txt ja wie gewünscht - kann ich erst in den nächsten Tagen testen...

ciao andy
Bitte warten ..
Mitglied: bastla
20.07.2012 um 17:44 Uhr
Hallo rocky2k!

Sollte nicht am XP liegen, da ich damit getestet habe ...

Wenn Du dem Batch "über die Schulter schauen" möchtest, einfach aus "echo off" ein "echo on" machen und direkt aus der CMD-Shell starten - auf Wunsch auch mit einer Umleitung der Ausgabe in eine Textdatei, damit Du Dir das dann in Ruhe ansehen kannst - etwa durch Eingabe von:
D:\Ordnerverschieben.cmd>D:\Logdatei.txt
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Windows Netzwerk
Dateien und Ordner verschieben mit Rückfrage (1)

Frage von stefts zum Thema Windows Netzwerk ...

Batch & Shell
gelöst Dateien anhand des Namens in neue Ordner verschieben (17)

Frage von Cookiemonster zum Thema Batch & Shell ...

C und C++
Dateien in Ordner kopieren anhand vom Teil eines Dateinamen (22)

Frage von onlyforu8373 zum Thema C und C ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...