pp1707
Goto Top

Batch Ordner aus Dateinamen erstellen und Dateien verschieben (Sonderzeichen)

Schoenen guten Tag,

ich bin neu hier im Forum und habe auch gleich schon meine erste Frage.
Und habe ich eine Batch Script gesucht was meine Dateien anhand des Dateinamens,
erkennt und einen Ordner erstellt sowie die gleichnamigen Dateien
in den so eben erstellten Ordner verschiebt.

Ich bin dann auch sofort im Forum in diesem Thread fuendig geworden.
Batch Ordner mit Dateinamen erstellen und verschieben

Klappt auch alles soweit: Die Ordner werden erstellt, die Dateienverschoben (zumindest der grossteil).

Probleme machen mir allerdings Dateien die Zeichen wie [ ] enthalten.
Beispiel: test[BG].jpg
test[CO].jpg
test[BG].mp3
test[CO].mp3

Diese werden dann nciht in den jeweiligen Ordner verschoben.

Stecke leider nicht in der Materie das ich das irgendwie selber loesen koennte.
Hoffe einer von euch kann mir helfen, oder sagen warum nun grade Dateien mit verschiedenen Zeichen nciht mit verschoben werden.

Vielen Dank schonmal

Pascal

Content-Key: 193995

Url: https://administrator.de/contentid/193995

Printed on: April 16, 2024 at 20:04 o'clock

Mitglied: 106543
106543 Nov 09, 2012 at 10:42:26 (UTC)
Goto Top
Hi face-smile

ich kann dein Problem zwar nicht lösen aber als kleiner Tipp für dich
wenn du unter den Beitrag, den du verlinkt hast deine Frage stellst wirst du mehr Antworten finden, weil dann alle, die in dem Beitrag schon geschrieben haben eine Nachricht bekommen, dass dieser Betrag gerade einen Kommentar bekommen hat ;)

Hab ich auch so gemacht und hatte sofort Hilfe

Grüße
Exzellius
Member: pieh-ejdsch
pieh-ejdsch Nov 09, 2012 at 10:49:34 (UTC)
Goto Top
moin,
naja, wenn nur die Ersthelfer von der anderen Baustelle Helfen sollen, dann ja.

Was sagt Dir denn die Fehlermeldung bzw. die Fehlermeldungen?

Gruß Phil
Member: PP1707
PP1707 Nov 09, 2012 at 11:00:23 (UTC)
Goto Top
Was sagt Dir denn die Fehlermeldung bzw. die Fehlermeldungen?

Also ich habe einfach die Befehlszeile aus dem alten Thread in die Befehlseingabe in Windows kopiert und die Pfade angepasst natuerlich.
Dann kommt als meldung die Dateien die verschoben wurden und wohin Sie verschoben wurden. und das wars. keine Fehlermeldung nichts. Die Dateien werden einfach nur nicht in den dazugehoerigen Ordner verschoben...

Die Frage in dem alten Thread zu stellen hatt ich auch erst, war mir dann aber nicht so sicher ob das nicht mecker gibt, weils ja schon 2 Jahre alt ist.

Rgds Pascal
Member: andimue
andimue Nov 09, 2012 at 11:17:56 (UTC)
Goto Top
Hi Pascal,

welche Befehlzeile aus dem alte Thread hast du denn genau verwendet ( da sind ja mehrere drin) ?
Vielleicht kannst du die uns mitteilen, dann kann man dir bestimmt gezielter helfen. So hat es doch ein bisschen was von Kaffeesetzlesen face-wink
Member: PP1707
PP1707 Nov 09, 2012 updated at 11:25:49 (UTC)
Goto Top
Oh Sorry, hatte ich nicht dran gedacht das da ja mehrere im Beitrag sind.

ich habe diese hier benutzt:

for %i in (D:\Videos\*.avi) do @(md "%~dpi%~ni" && move "%~dpni.*" "%~dpi%~ni\"

jedoch dann auf meinen Pfad angepasst. Im Ordner sind mehrer Dateien veschiedenen Dateityps, jedoch viele mit der gleichen Bezeichnung. (z.B. .txt .jpg .jpeg .mp3 .png) Diese wollte ich dann in den jeweiligen Ordner verschieben der zuvor erstellt werden sollte.

Jedoch wie oben beschrieben werden Dateien die Zeichen wie [ ] oder { } enthalten (im Dateinamen)
nicht in den jeweiligen Ordner verschoben. Und das ganze ohne Fehlermeldung

Rgds Pascal
Member: pieh-ejdsch
pieh-ejdsch Nov 09, 2012 updated at 11:48:30 (UTC)
Goto Top
Dann werden die Dateinamen wahrscheinlich nicht ausgegeben.
Entweder sind keine AVI dateien drin oder eine Kryptische Codepage erkennt die Zeichen nicht.
zum test:
for %i in (D:\Pfad\*) do echo "%i"  

Lass mal die Klammer darum weg und auch das @(...) vor der Klammer.

Gruß Phil
Member: PP1707
PP1707 Nov 09, 2012 at 12:05:04 (UTC)
Goto Top
Hab die Testzeile mal ausgefuehrt und es werden alle Dateien ausgegeben.

Aber ich glaube ich weiss wo mein Denkfehler bei dem Script ist.

Also erstens glaube ich ich habs euch falsch beschrieben:
Die Dateien heissen
(test - test.jpg
test - test.mp3
test - test.txt)
Dann funktioniert es auch und alle Dateien werden in den Ordner (test - test) verschoben

dann sind aber dateien drinn die heissen

(test1 - test1.mp3
test1 - test1 [BG].jpg
test1 - test1 [CO].jpg)

In diesem Fall landet nur die Datei test1.mp3 im Ordner (test1 - test1)

Versucht in dem Fall nicht das Script die Datei test1 - test1 [BG].jpg in den Ordner (test1 - test1 [BG]) zu
verschieben?
Oder liege ich da auf dem Holzweg?

Rgds Pascal
Member: pieh-ejdsch
pieh-ejdsch Nov 09, 2012 updated at 13:14:27 (UTC)
Goto Top
Die Befehlszeile von bastla verschieb die Dateien aber nur einmalig in die Ordner wenn noch keine Ordner bestehen, daher die Frage wegen der Fehlermeldungen.

Ohne Deine Zeile so wie Du sie verwendest, zu sehen, kann man nur spekulieren.

Gruß Phil
Member: PP1707
PP1707 Nov 09, 2012 at 13:31:51 (UTC)
Goto Top
Also ich habe nur meinen Ordner angepasst und die Datei von *.avi auf *.mp3 geaendert, da ich keine avis im Ordner habe.

for %i in (D:\Songs\*.mp3) do @(md "%~dpi%~ni" && move "%~dpni.*" "%~dpi%~ni\"

Das ist alles. Und wie schon gesagt er packt alle Dateien die den gleichen Namen haben in den korrekten Ordner.

z.B. Lieder mit den Bilder

ABBA - Dancing Queen.mp3
ABBA - Dancing Queen.jpg
kommen in den Ordner ABBA - Dancing Queen ohne Probleme.

ABBA - Dancing Queen.mp3
ABBA - Dancing Queen.jpg
Abba - dancing queen.txt
Die auch alle. Auch wenn die gros klein schreibung nicht stimmt.

Nur
ABBA - Dancing Queen.mp3
ABBA - Dancing Queen.txt
ABBA - Dancing Quenn [BG].jpg
Da kommt die Datei ABBA - Dancing Queen [BG].jpg nicht mit in den Ordner ABBA - Dancing Queen.

SO in etwa....

Rgds. Pascal
Member: pieh-ejdsch
pieh-ejdsch Nov 09, 2012 updated at 14:21:07 (UTC)
Goto Top
Ach so Du willst die Dateien mit eckiger Klammer auch in den Ordner OHNE Eckige Klammer haben.
Ich hatte es so verstanden, dass die Datei mit Eckiger Klammer von vornherein nicht in den Ordner mit Eckiger Klammer kommt (weil sie soll).

Dann lass den Punkt weg
move "%~dpni*" "%~dpi%~ni\"  

Wenn Die Ordner schon Teilweise vorhanden sind würde ich es so machen:
for %i in (D:\Songs\*.mp3) do @md "%~dpi%~ni" &if exist "%~dpi%~ni\" move "%~dpni*" "%~dpi%~ni\"  

Gruß Phil
Member: PP1707
PP1707 Nov 09, 2012 updated at 14:35:56 (UTC)
Goto Top
Genial Danke,
hat super funktioniert.

Meine letzte Frage waere in dem Fall, wofuer ich das Script dann letztendlich nutzen will, funktioniert das ganze auch mit Dateien die Windows nicht kennt.
Weil eigentlich moechte ich Dateien aus ner alten Datenbank in die entsprechenden Ordner kopieren. Das sind dann aber alles Dateiendungen die Windows so nicht kennt.
Kann ich in dem Fall das gleich Script verwenden?
Und wie sieht es da mit Dateien aus die Sonderzeichen wie (sagen wir Buchstaben aus Afrikanischen Laendern) haben?

Leider darf ich es nicht genauer beschreiben.....

Rgds Pascal
Member: pieh-ejdsch
pieh-ejdsch Nov 12, 2012 at 19:44:24 (UTC)
Goto Top
moin Pascal,

windows ist es völlig egal was das Script für eine Datei verschieben soll.
Wenn Du der CMD sagst sie soll alle (*) Dateien verschieben, werden alle verschoben.
Wenn Du nur eine eine Bestimmte Beliebige Endung (*.BeliebigeEndung) nehmen willst, verschiebt es nur diese.
Du legst ja damit nur einen Filter fest.

Sobald die Timbuktische Keilschrift im Dateinemen beim verschieben probleme verursacht, kannst Du hier im Forum wieder fragen.

Gruß Phil