Per Batch bestimmte dateitypen verschieben...

MySt3rY

Cadet 4th Year
Registriert
Dez. 2008
Beiträge
127
Hallo,
ich find jetzt kein passendes Unterforum hierfür, deswegen schreib ich jetzt es hierein ;)
Falls es doch sowas hier gibt, bitte Thread schubsen ;) dankö :D
bin jetzt soweit gekommen, dass ich mit move *.dateiendung test die gewünschten dateitypen in den ordner test verschieben kann... doch wie wie erweitere ich den move befehl auf die unterverzeichnisse? mit dir *.dateiendung /s werden mir zwar auch die gewünschten sachen in den unterverzeichnissen angezeigt, aber wie kann ich das ergebniss von dir *.dateiendung /s mit den move befehl benutzen?

ich hab versucht, dass ergebnis von dir *.dateiendung in eine variable zu packen, doch das wird mit einer fehlermeldung quittiert :(
SET Dateiendung=dir *.dateiendung /s
move %dateiendung% test

Syntaxfehler.....

vielen dank für die hilfe & lösungsvorschläge :)
 
Entweder schaust dir Robocopy an oder Schleifen in Batch Files... Beides sollte dir weiter helfen. Wenn du konkret Probleme mit dem Syntax hast melde dich.
 
Muss es unbedingt eine Batch Lösung sein? Oder geht es Dir nur drum aus vielen Verzeichnissen die Dateitypen in ein Seperates zu verschieben. Dann würde ich Dir das Programm Total Commander ans Herz legen.

Dort müsstest Du nur mit STRG + B innerhalb den Übergeordenten Verzeichnis Dir anzeigen lassen und mit + und der des Befehls *.deingesuchterdateityp und kopierst oder verschiebst diese Dateien dann in Dein Verzeichnis mit F5 rein.

PS: guckmal hier -> http://www.heise.de/ct/hotline/Dateien-aus-Unterverzeichnissen-zusammenfuehren-810036.html
 
es geht mir, wenn möglich um eine automatisierte lösung...sprich direkt nach den hochfahren sortiert der rechner die verschiedenen dateitypen in verschiedene ordner...

ich bin jetzt mit robocopy "Quelle" "Ziel" *.dateityp /move /S /W:1 /R:1 weitergekommen...was jetzt noch nicht schön ist, das ordner mit kopiert werden, die nicht den entsprechenden dateityp enthalten..

€dit: sieht vielversprechend aus, danke!
2edit:In den heise link gehts um xcopy (kopieren, nicht ums verschieben)...ich weiss nicht, um man das skript mit move anpassen kann, da kenn ich mich zuwenig mit batch aus :(
 
Zuletzt bearbeitet:
Hi,

habe mich mal einwenig damit auseinander gesetzt. Schau mal ob Dir das weiter hilft:

Code:
dir /b /s j:\test\*.txt > Dateien.txt
for /f %%i in (Dateien.txt) do (move %%i j:\test\D)
del Dateien.txt

Damit werden alle Dateien mit der Endung txt im Ordner j:\test inkl. unterordner gesucht und dann nach j:\test\D verschoben. Anschließend wird die temporäre Datei gelöscht die zu anfangs erstellt worden ist.
 
Hi,
das geht auch ohne temp. Datei
Code:
@echo off
for /f %%i in ('dir /b *.jpg') do move %%i C:\backup
pause
 
@Driver78 vielen dank für deine Lösung, er funktioniert besser als Entilzha vorschlag, da dein vorschlag auch mit unterverzeichnissen klarkommt... /s vergessen :daumen:

Nur tritt da wieder das altbekannte "leerzeichen" problem auf..sprich dateien/ordner mit leerzeichen werden nicht berücksichtigt -.-

dieses problem liesse sich lösen, wenn man jeden wert, den man mit dir /b /s j:\test\*.txt > Dateien.txt ausliest, in "" einsetzen könnte...sonst kriegt man die Fehlermeldung: "Das System kann die angegebene Datei nicht finden."

eine Anpassung der Schleife in for /f %%i in (Dateien.txt) do (move "%%i" j:\test\D) geht leider nicht....:confused_alt:

könnt ihr mir da weiterhelfen? :heul:
 
Zuletzt bearbeitet:
Habe zwar nun ein Lösung, doch 100%ig gefällt sie mir nicht. Doch funktionieren tut sie mal.
Vielleicht findet sich jemand der da etwas mehr Ahnung hat!

Code:
dir /b /s "j:\test\*.txt" > Dateien.txt
FOR /f "delims=;" %%f IN (Dateien.txt) DO @set crc=%%f
move "%crc%" j:\test\D
for /f %%i in (Dateien.txt) do (move %%i j:\test\D)
del Dateien.txt
 
Hi,
so sollte das Leerzeichen-Problem gelöst sein:


Code:
for /f "tokens=*" %%i in ('dir /b /s *.txt') do move "%%i" "F:\Test"

MySt3rY schrieb:
eine Anpassung der Schleife in for /f %%i in (Dateien.txt) do (move "%%i" j:\test\D) geht leider nicht...

Als Tipp:
Ersetze beim Erstellen u. Testen vor den auszuführenden Befehl (hier "move") ein "ECHO".
Dann erkennst du, dass bereits die Variable der FOR-Schleife unvollständig ist.
Ergänzung ()

@Driver78: Du verwendest in deinem Beispiel als Trennzeichen ";".

Ist das aus irgendeinen Grund beabsichtigt?

In "Dateien.txt" entspricht jede Zeile eine Datei.
Enthält ein Dateinamen somit das Zeichen ";" würde es ab hier abgeschnitten werden u. im darauf folgenden Befehl zum Fehler führen (da dann der Dateiname nicht mehr richtig weitergeben wird). Auch der Rest scheint mir etwas fraglich, oder sehe ich das falsch?
 
Zuletzt bearbeitet:
vielen dank, funktioniert bestens :)

magst du mir vielleicht noch deine lösung erklären?^^ z.B. versteh ich das mit den Tokens nicht....

vielen dank an alle, die mit an der lösung gebastelt haben :D
 
Die "FOR-Schleife" arbeitet zeilenweise, standardmäßig jede Zeile bis zum ersten Leerzeichen
(darum auch dein ursprüngliches Problem).
Die Bereiche bis jeweils zum nächsten Leerzeichen werden als "Token" bezeichnet. Diese kann man gezielt auswählen.

Hier erklärt anhand dem Inhalt einer "Beispiel.txt"-Datei:

Mathematik Hausaufgaben 2012-10-08.doc
Deutsch Hausaufgaben 2012-10-08.doc
Englisch Hausaufgaben 2012-10-08.doc

Code:
cmd /c
@echo off
for /f %%a in (Beispiel.txt) do echo %%a
Mathematik
Deutsch
Englisch

for /f "tokens=1" %%b in (Beispiel.txt) do echo %%b
Mathematik
Deutsch
Englisch

for /f "tokens=2" %%c in (Beispiel.txt) do echo %%c
Hausaufgabe
Hausaufgabe
Hausaufgabe

for /f "tokens=3" %%d in (Beispiel.txt) do echo %%d
2012-10-08.doc
2012-10-08.doc
2012-10-08.doc

for /f "tokens=*" %%e in (Beispiel.txt) do echo %%e
Mathematik Hausaufgaben 2012-10-08.doc
Deutsch Hausaufgaben 2012-10-08.doc
Englisch Hausaufgaben 2012-10-08.doc

pause
Alles nochmal ausführlich in "FOR/?" (mit noch mehr nützliche Optionen). -> Gut, ist nicht immer ganz einfach, das umzusetzen.;).
Als Tipp: Schreibe deine Befehle erst in der Kommandozeile (benutze als Variable allerdings "%a" statt "%%a")
oder verwende den Befehl "Echo" in der Batch-Datei, dann sieht man besser was funktioniert, bzw. wo es hakt.
 
Zurück
Oben