Ansicht:   

#404355

otti1a

26.10.2016, 18:05:59

Batchfile Ordner nach Dateinamen erzeugen (pc.coding)

Hallo Leute,

seit 3 vollen Tagen suche ich im Netz nach einer Lösung und bin nicht wirklich fündig geworden, darum bitte ich um eure Hilfe, da ich noch dazu im Programmieren eine völlige Niete bin. Das Problem: in einem Ordner D:Botanik habe ich ca. 5500 Pflanzenfotos, nach (über 100) Familien sortiert, z.B. D:BotanikKorbblütlerxy.jpg Der Aufbau der Dateinamen geht so:
wissenschaftlicher Name - deutscher Name (Land Ort)_01
Natürlich gibt es für viele Pflanzen mehrere Bilder und was ich brauche, ist ein Code (möglichst .bat oder .vbs) der 1. innerhalb des Familien-Ordners neue Folder erzeugt, benannt nach den Pflanzennamen bis zur Klammer und 2. die Files in den jeweils passenden Ordner verschiebt.
Habe schon einige Batches und ein vbs -Script (Beisp. siehe unten) probiert, wobei das Problem bei mir ist, dass ich auch zu wenig Kenntnisse habe, um die Scripts richtig anzupassen! Auch mit einigen Progs (TC,Dropit, watch Directory, file2folder, advanced renamer und noch andere ...) bin ich nicht weitergekommen. Das Ergebnis war entweder ein Folder für jedes file - bzw. eine Fehlermeldung oder überhaupt keine Aktion bei den Scripts. Ich brauche aber nur so viele Folder, wie Dateien mit gleichlautendem Namen bis zur Klammer im Familien-Ordner sind.
Beispiel für ein Skript:

for /f "delims=_ tokens=1-3 " %i in ('dir /a-D /b d:einDBADirDBA_3_*') do @if not exist "d:einDBADir%i_%j_%k" md "d:einDBADir%j_%j%k"
for /f "delims=_ tokens=1-3 " %i in ('dir /aD /b d:einDBADirDBA_3_*') do move "d:einDBADir%i_%j_%k*.tif" "d:einDBADir%j_%j%k"



oder:

@echo off

cls

set SRC=c:quelle
set DEST=c:ziel

for /f "tokens=4" %%i in ('dir %SRC% ^| find "_"') do (
	for /f "tokens=1-3 delims=_" %%j in ("%%i") do (
		
		 md %DEST%%%j_%%k_%%l 2>nul
				
		
		 echo copy %SRC%%%i %DEST%%%j_%%k_%%l%%i

		 copy %SRC%%%i %DEST%%%j_%%k_%%l%%i >nul

		if %errorlevel% EQU 0 (
			echo Datei  %%i  erfolgreich nach  %%j%%k%%l  kopiert
		) else (
			echo FEHLER beim Verarbeiten der Datei  %%i
		)
	)
)

#404357

rstilz

26.10.2016, 19:43:47

@ otti1a

ohne Vollautomatik ...

... gehts ev einfacher  ;-)

Also ich würde das nicht komplett per Skript lösen (was sicher auch elegant geht, aber "richtiges" Programmieren erfordert). Wichtig ist ja dass man mit den Mitteln und Methoden die man (einigermassen) beherrscht auch zum Ergebniss kommt.

Also(wir brauchen "DOS", Tabellenkalkulation, "guten" Editor wg der tabs):

1. Erzeuge eine Liste der Dateinamen (zB DOS: dir *.* >fnamlist.txt)

2. Importiere die Liste in LibreOffice.Calc(exel, oder whatever) mit dem "(" als Trennzeichen
Damit hast du eine Liste der Ordnernamen in einer Spalte getrennt vom "Rest"

3. Kopiere diese Liste (als Wert!) auf ein extra Blatt und sortiere nach Namen. Damit stehen alle Mehrfachnennungen nun schön beisammen (untereinander).

4. Um die Doppel auszusortieren einfach als Formel in die Nachbarzellen zu zB Spalte A(also die Ordnernamen)
if(A2<>A1;A1;"")
Damit hat die Nachbarspalte nur noch eindeutige Namen und Leerzeilen.
1. und letzte Zeile der neuen Liste später ggf "manuell" ausfüllen.

5. Diese Liste (als Wert!) erneut in eine extra Spalte kopieren und wieder sortieren(->Leerzeilen weg)

6. Jetzt kannst du den für ein DOS-Kommando fehlenden Text in einer weiteren Spalte ergänzen
zB "md " "<hier spaltemitordnername>"

7. Den gewünschten Inhalt per Cut'n Paste in einen Editor ausspucken (zB Notepad++ portable).
Dort die aus der Tabellenkalkulation eingefügten tabs ersetzen(t nach " ")

8. Die Datei als bat-file speichern und ausführen

9. ff-Schritte: Das Prinzip sollte jetzt klar sein  ;-)

HTH

P.S. Bei 5000 Zeilen kann der Import der Ordnerliste kurz dauern.

#404359

otti1a

26.10.2016, 20:37:39

@ rstilz

ohne Vollautomatik ...

Danke, rstilz

Eine komplette List der Arten ohne Duplikate habe ich schon längst, und ich hab auch ein Batch, das die Ordner dazu erzeugt. Ich nehme an, das würde dein Vorschlag auch machen. Es geht ja um das mühsame Einsortieren der Dateien in die jeweiligen Ordner und das kann dieser Batch wahrscheinlich nicht, oder?

Grüße, Otti

#404360

rstilz

26.10.2016, 21:04:54

@ otti1a

Mhhhh...

Hallo Otti

> Eine komplette List der Arten ohne Duplikate habe ich schon längst, und ich
> hab auch ein Batch, das die Ordner dazu erzeugt.
Gut

> Ich nehme an, das würde dein Vorschlag auch machen. Es geht ja um das mühsame Einsortieren der
> Dateien in die jeweiligen Ordner und das kann dieser Batch wahrscheinlich nicht, oder?
Mhhhh... Eigentlich wollte ich dir "keinen Fisch geben sondern zeigen wie man angelt  ;-)"

Also, nehme doch die große Liste mit den Dateinamen und ergänze (in exel o.ä.) in der Nachbarspalte die nötigen DOS-Kommandos und Ordnernamennamen (nach "Rezept 1"). Dazu werden ja nur die "bearbeiteten" Zellinhalte wieder "neben" die Ausgangsspalte kopiert.

Das Prinzip ist doch einfach aus deiner ursprünglichen Liste durch Einträge in Nachbarspalten (zwar manuell, aber doch sehr schnell machbar mit exel o.ä.) eine Textzeile "zusammenzustückeln" die das nötige Kommando für diese eine Datei enthält.
Wenn man das erledigt hat macht man aus diesen Inhalt nur noch eine bat-Datei mit 5000 Zeilen die das dann im DOS-Fenster ausführt.

HTH
reiner

#404363

otti1a

26.10.2016, 21:16:41

@ rstilz

Mhhhh...

Eigentlich wollte ich nicht angeln lernen, oder würdest du vielleicht lernen wollen, ein paar Tausend Pflanzen zu erkennen? Ich arbeite z. B. in einem botanischen Forum mit und identifiziere Pflanzen für Leute, die mir ein Foto schicken, soweit es anhand des Bildes möglich ist. Wir haben also jeder unsere Spezialkenntnisse, aber auf verschiedenen Gebieten. In Excel zum Beispiel kenne ich mich wohl ganz gut aus, und auch ein bisschen in Access. Da möchte ich auch immer was dazu lernen, aber script code wird immer Chinesisch für mich bleiben... Bin gerade dabei, eine Pflanzen-Datenbank zu erstellen, das ist Arbeit genug. Dachte nur, es gäbe jemanden, der es mir ein bisschen erleichtert.

Danke jedenfalls!

#404369

Karsten Meyer zur Homepage von Karsten Meyer

Konstanz am Bodensee,
26.10.2016, 21:45:26

@ otti1a

Mhhhh...

> Eigentlich wollte ich nicht angeln lernen...

Lies dir doch seine Lösung nochmal in Ruhe durch. Ich finde sie bestechend einfach, und sie hat rein gar nichts mit Programmieren zu tun. Das Tabellenprogramm erledigt die anspruchsvolle Sache dabei, nämlich die Abtrennung der Ordnernamen.

--
Ich bin sehr aktiv bei facebook, wo ich vor allem Fotos zeige und mich in Gruppen über alles mögliche, insbesondere meine Heimatstadt Konstanz austausche.

#404370

otti1a

26.10.2016, 22:01:57

@ Karsten Meyer

Mhhhh...

Was ich noch korrigieren wollte, ist Folgendes: in meiner ersten Anfrage habe ich ein paar Pfade hineingeschrieben

D:BotanikKorbblütlerTaraxacum sect. Ruderalia - Gewöhnlicher Löwenzahn (A Michelhausen)_01

und der Editor hat die Backslashs gekillt. Hoffentlich haut es jetzt hin!
Es handelt sich um über hundert Familien-Ordner mit je 2-100 Arten, für die ich jeweils einen Unterordner brauche. Na, dann muss ich es eben händisch machen!

#404371

otti1a

26.10.2016, 22:05:02

@ otti1a

Mhhhh...

Wieder sind die blöden backslashs weg! Ich versuche es so:
D:(backslash)Botanik(backslash)Korbblütler(backslash)BotanikKorbblütlerTaraxacum sect. Ruderalia - Gewöhnlicher
> Löwenzahn (A Michelhausen)_01

#404372

otti1a

26.10.2016, 22:07:47

@ otti1a

Mhhhh...

Neuer Versuch:

Wieder sind die blöden backslashs weg! Ich versuche es so:
D:(backslash)Botanik(backslash)Korbblütler(backslash)Taraxacum sect. Ruderalia - Gewöhnlicher Löwenzahn (A Michelhausen)_01

Schaut zwar nicht gut aus, aber anders bring ich es nicht zusammen

Gruß, Otti

#404381

bender

Strasshof an der Nordbahn,
27.10.2016, 10:45:38

@ otti1a

OT

Vielleicht schaffen es die Admins dieses Forums doch mal, diesen Bug zu beheben. Ich kann diese never-touch-a-running-system-Mentalität ja irgendwo nachvollziehen, nur das nervt dann doch ein wenig. Davon mal ab wäre eine smartphonetaugliche Version auch mal ganz nett.

--
Grüße aus Strasshof an der Nordbahn (ja, da wo die Natascha im Keller lebte)
bender

sudo apt-get install brain_2.0

#404382

fuchsi zur Homepage von fuchsi

Niederösterreich,
27.10.2016, 10:54:20
(editiert von fuchsi, 27.10.2016, 10:54:44)

@ bender

OT - TEST backslash (ed)

> Vielleicht schaffen es die Admins dieses Forums doch mal, diesen Bug zu
> beheben. Ich kann diese never-touch-a-running-system-Mentalität ja irgendwo
> nachvollziehen, nur das nervt dann doch ein wenig. Davon mal ab wäre eine
> smartphonetaugliche Version auch mal ganz nett.

auch in Code eingebettet löscht er beim Editieren die Backslash

d:testtesttest

--
mein privates Hobby. www.ffzell.at

#404442

baeuchlein

28.10.2016, 15:13:31

@ otti1a

OT: Backslash-Ersatz

> Wieder sind die blöden backslashs weg! Ich versuche es so:
> D:(backslash)Botanik(backslash)Korbblütler(backslash)Taraxacum sect.
> Ruderalia - Gewöhnlicher Löwenzahn (A Michelhausen)_01
>
> Schaut zwar nicht gut aus, aber anders bring ich es nicht zusammen

Tippe statt des mit ALT-Gr und ß erreichbaren Backslashes ein "/" (Umschalt-/SHIFT-Taste und Taste "7" über dem Buchstabenfeld). Das sieht besser aus und wird von den meisten hier im Forum inzwischen notgedrungen verstanden.

#404374

rstilz

26.10.2016, 22:48:05

@ otti1a

Mhhhh...

> Ich arbeite z. B. in
> einem botanischen Forum mit und identifiziere Pflanzen für Leute, die mir
> ein Foto schicken, soweit es anhand des Bildes möglich ist.
oK, überzeugt  ;-)
Wenn es nicht eilt "sortier" ich's mal. Lad die Datei einfach auf workupload.com hoch (Speicherdauer 14 Tage)
und poste den Link darauf.

mein batch:
"wissenschaftlicher Name - deutscher Name (Land Ort)_01"
würde dann kopiert in den Subordner "wissenschaftlicher Name - deutscher Name"
mit dem Namen (wie vorher) "wissenschaftlicher Name - deutscher Name (Land Ort)_01"

Wenn möglich hier bitte dann ein Beispiel wie das DOS-Kommando für *eine* Datei aussehen soll.

> Dachte nur, es gäbe jemanden, der es mir ein bisschen erleichtert.
Versuchen doch alle hier im Forum. Jeder auf seine Art und Schritt für Schritt.

#404364

Manfred H

26.10.2016, 21:20:25
(editiert von Manfred H, 26.10.2016, 21:27:02)

@ otti1a

ohne Vollautomatik ... (ed)

Schreibe doch mal 2-3 Namensgruppen und die dazugehörigen Zielordner hier rein.

BotanikKorbblütler1.jpg
BotanikKorbblütlerx.jpg
BotanikKorbblütleradada.jpg
BotanikKorbblütlerZZZ.jpg

kannst Du alle mit BotanikKorbblü*.jpg kopieren

edit:
Du kannst auch zwei win-explorer Fenster nebeneinander gruppieren.

WIN-Taste und Pfeil links oder rechts

Dann im Quellfenster nach Dateiname sortiern und die ganzr Dateinamen-Gruppe markieren. Dann der Dragndrop ins ander Fenster ins Zielverzeichnis ziehen.
"Vielleicht bist ja Du in eine Stunde fertig".

ed die zweite
Verflixt mein linux netbook hat Tastaturhänger.

Ansicht:   
Auf unserer Web-Seite werden Cookies eingesetzt, um diverse Funktionalitäten zu gewährleisten. Hier erfährst du alles zum Datenschutz