Dateien automatisiert eine Ordnerebene nach unten verschieben

diwo13

Cadet 2nd Year
Registriert
Apr. 2014
Beiträge
20
Hallo

ich suche eine Lösung für folgendes Problem.

Ich habe eine etwas seltsame Ordnerstruktur. Ebene1 sind ca. 400 Ordner. In jedem dieser Ordner befindet sich wieder mindestens ein aber auch bis zu 40 Ordner. Und in jedem dieser Ordner befinden sich 4 verschiedene Dateitypen von denen ich aber nur eine benötige.
Da ich aus dem letzten Ordner nur eine Datei benötige würde ich gerne alle anderen löschen. Das würde ich dann über die Suchfunktion von win7 machen, also suche im Ordner XY nach *.* und dann nach Dateityp sortieren und alle nicht benötigten löschen.

Und da sind wir dann auch bei meinem Problem. Übrig bliebe jetzt eine einzelene Datei pro Ordner. Das halte ich für wenig sinnvoll. Deshalb würde ich gerne automatisiert jede dieser Dateien eine Ebene nach unten schieben.

Hat dazu jemand eine Idee oder vielleicht sogar direkt eine Lösung parat??

Vielen Dank und Gruß
 
Hi,
per bach sicherlich machbar, hier ein schickes c't Script Dateien-aus-Unterverzeichnissen-zusammenfuehren vielleicht ist das was du suchst. (das Script kopiert, willst du verschieben muss du move anwenden und etwas anpassen)

Hier ein Code von bastla aus dem www.administrator.de Forum.
Per Batch dateien aus Unterordner in den Hauptordner verschieben
Code:
@echo off
cls

:: hier kommt der Pfad von Ebene 1
set "pfad=c:\blub"

:: Dateiendung 
set "exe=txt"

pushd %pfad%

for /f "delims=" %%i in ('dir /b /ad') do (
    for /f "delims=" %%j in ('dir "%%i" /b /ad "*.%exe%"') do @echo move /y "%%i\%%j\*.*" "%%i"
)
popd
pause
ist etwas modifiziert, pfad muss du anpassen und die exe, oder diese ganz weglassen wie in Org. Beitrag.
das @echo wie immer nur zu testen!

Lese bitte den Org. Beitrag auf www.administrator.de!
 
Bei Massen-Dateioperationen (löschen, verschieben, umbenennen, etc.) kann ich die Kombination aus CMD-Befehl, Notepad(++) und Tabellenkalkulation empfehlen wenn geringe Grundkenntnisse vorhanden sind.

1. Dateiliste erstellen
DIR * /B /S /O:N /A:-D > dir.txt

2. Den Inhalt von dir.txt kannst Du in Excel/Calc in Spalte A und B einfügen

3. In Spalte B änderst Du den Pfad wie gewünscht

4. In Spalte C erstelltst Du den eigentlichen CMD-String z.B.
="MOVE /Y " & A1 & " " & B1

mit Leerzeichen im Pfad siehts dann so aus
="MOVE /Y " & """" & A1 & """" & " " & """" & B1 & """"

5. Spalte C in eine CMD-Datei packen und ausführen

Fertig, der Vorteil besteht in der Flexibilität :)
 
Guten morgen

Ich hatte diese Geschichte ganz aus den Augen verloren. Werde mich aber wahrscheinlich in der nächsten Zeit wieder damit beschäftigen müssen.

Ich danke euch für eure Tipps. Ich werde mir die Beiträge von Entilzha und ygbr nachher mal genauer ansehen.
 
ygbr schrieb:
1. Dateiliste erstellen
DIR * /B /S /O:N /A:-D > dir.txt

2. Den Inhalt von dir.txt kannst Du in Excel/Calc in Spalte A und B einfügen

3. In Spalte B änderst Du den Pfad wie gewünscht

4. In Spalte C erstelltst Du den eigentlichen CMD-String z.B.
="MOVE /Y " & A1 & " " & B1

mit Leerzeichen im Pfad siehts dann so aus
="MOVE /Y " & """" & A1 & """" & " " & """" & B1 & """"

5. Spalte C in eine CMD-Datei packen und ausführen


Hi

ich stelle grade dei ersten Versuche an. Es klappt das ich mit dem von Dir angegebenen "DIR ... " Befehl und in Kombination mit Excel mir die entsprechende "MOVE..." Zeile zusammenbaue.
Die mit Excel erstellte "MOVE..." Zeile kopiere ich dann in eine mit dem Notepad neu erstellte Textdatei, schalte den Zeilenumbruch ab und benenne diese dann in eine "*.bat" um. Diese führt den Befehl dann aber nicht so aus wie gewollt.

Ist denn der Weg mit der Textdatei und dieser umbenennen in eine "*.bat" korrekt? Wenn der Weg so korrekt ist, werde ich meine Excel-Aktion nochmal kontrollieren müssen.
 
Ich würde die Datei "speichern als" .bat Datei.
Mit umbenennen hatte ich schon schon Probleme.

Im zweifelsfall die .bat nicht per doppelklick ausführen, sondern cmd starten, in das Verzeichnis navigieren und die .bat ausführen.
Dann sieht man evtl. wo der fehler liegt.
Wichtig ist das die .bat Datei nicht wie eine bereits vorhandene Windows funktion heißt.
also move.bat, copy.bat oder ping.bat wird nicht funktionieren
 
Also ich nenne das eine Ebene höher, aber wenn man den Verzeichnisbaum andersrum anguckt, ist's von mir aus eben weiter unten (Aber sinnvoller finde ich, wenn der Unterordner eben unter dem übergeordneten liegt.)

Code:
@echo off
set "rootpfad=Hier den zu durchsuchenden Ordner angeben"

if not exist "%rootpfad%" goto end
cd "%rootpfad%"
for /F "delims=" %%a in ('dir /B /S /A:D') do (
cd "%%a"
move * ..
)
:end

Schiebt bei wiederholter Ausführung alles immer eins weiter nach oben, so lange bis alle Dateien im Root liegen.
 
Zuletzt bearbeitet: (Vorsichtshalber Zeile 4 eingefügt.)
Also für mich ist root(Wurzel) die unterste ebene. Die UNTERordner liegen dann dummerweise darüber....da hast Du recht.

@simpsonfan ... Wo schreibe ich dieses script von Dir hin?? Ist das auch eine .bat Datei??
Verschiebt dieses script auch Ordner oder nur Dateien?
Wie oder wo könnte ich das script anpassen um z.b. nur .ZIP zu verschieben?
Könntest Du mir die einzelnen Befehle /Bedingungen der erläutern, damit ich verstehe was dort passiert?

Ach ja .. Bevor ich es vergesse:Dank an alle für Eure Hilfe und Tips
 
Der Code ist für eine .bat, wenn man die doppelten Prozentzeichen in der for-Schleife durch einzelne ersetzt, kann man es auch direkt in die Konsole eingeben.
Liegen darf diese Batch überall, da in Zeile 5 extra in das Rootverzeichnis gewechselt wird.
Die Schleife in Zeile 6 geht sämtliche Unterordner (diese listet der dir-Befehl auf) durch und wechselt jeweils in den Ordner (Zeile 7), dann werden die Dateien verschoben (Zeile 8).
In dieser Form verschiebt das Skript nur Dateien, Zeile 8 schiebt alle Dateien (der *) in das übergeordnete Verzeichnis (das .. in Windows). Will man nur Zip-Dateien verschieben, so ersetzt man in Zeile 8 den * durch *.zip.
 
Sorry

ich habe das hier ganz aus den Augen verloren, da sich das Problem erstmal hinten anstellen mußte. Aber ich möchte mich trotzdem noch für eure kompetente und ausführliche Hilfe bedanken.

Vielen Dank auch für detailierte erklärung des scriptes.

Beste Grüße
 
Zurück
Oben