verfaßt von otti1a, 26.10.2016, 18:05:59
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
)
)
)
gesamter Thread: