pbelcl
Goto Top

Jalbum Listen statt M3u - kopieren Batch

da wär noch eine Kleinigekeit

Hi Leute,

in diesem Thread hat mit bastla geholfen meine Batchdatei auch mit Leerzeichen zm Laufen zu bringen.
Nun habe ich vor gehabt die Listen die mein Jalbum erzeugt HÄNDISCH in eine M3U Datei umzuwandeln, um damit in der Lage zu sein damit meine ausgewählten Fotos wohin kopieren zu können.

Ist es vielleicht möglich auch gleich die JALBUM Listen als Basis zum Kopieren zu verwenden?
Diese Liste sind folgendermassen aufgebaut:

# This file is created by JAlbum. It sets custom file filtering and ordering for this image directory.
# Each row indicate a file and it's order. Files not listed here are added to the end of the album 
# Rows beginning with "-" indicate excluded files. 
# Rows containing a tab character indicate links, where the text before the tab is the logical file name
# and the path to the right is the target path.
# Note: This file allows absolute paths to files and directories in other locations and thereby
# allows you to compile albums consisting of files from several different locations.

DSC_0424.JPG	P:\Fotos DVD\Fotos_12\5. Wiener Fotomarathon\Wertung\DSC_0424.JPG
DSC_0426.JPG	P:\Fotos DVD\Fotos_12\5. Wiener Fotomarathon\Wertung\DSC_0426.JPG
DSC_0427.JPG	P:\Fotos DVD\Fotos_12\5. Wiener Fotomarathon\Wertung\DSC_0427.JPG
DSC_0430.JPG	P:\Fotos DVD\Fotos_12\5. Wiener Fotomarathon\Wertung\DSC_0430.JPG
DSC_0434.JPG	P:\Fotos DVD\Fotos_12\5. Wiener Fotomarathon\Wertung\DSC_0434.JPG
DSC_0437.JPG	P:\Fotos DVD\Fotos_12\5. Wiener Fotomarathon\Wertung\DSC_0437.JPG
DSC_0462.JPG	P:\Fotos DVD\Fotos_12\5. Wiener Fotomarathon\Wertung\DSC_0462.JPG

Ich will aus dem ganzen Textfile nur den Pfad rechts "P:\Fotos DVD\Fotos_12\5. Wiener Fotomarathon\Wertung\DSC_0462.JPG" in einer Variable haben.

Die Frage ist, geht das überhaupt??
Wenn ja was muss ich an diesem Teil

FOR /F "eol=; delims=" %%i in (%PLS%%liste%.m3u) do (  
if Exist "%%i" copy "%%i" "%zielpfad%\%%~nxi" /v /y>nul   
if %2!==! if EXIST %%i %utildir%\colecho 10 0 kopiere:  %%i 
if NOT EXIST %%i %utildir%\colecho 12 0 fehlt:  %%i 
if NOT EXIST %%i echo %%i --- fehlt!>>"%zielpfad%\0_fehlende_Dateien.txt"   
)

meines Batch abändern, damit ich die Pfade direkt aus dem JALBUM File lesen kann.

Oder hat jemand von Euch eine andere, bessere Idee??

Content-Key: 134054

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

Printed on: April 19, 2024 at 00:04 o'clock

Mitglied: 60730
60730 Jan 21, 2010 at 14:52:48 (UTC)
Goto Top
Servus,

for /f "tokens=2,* eol=#" %a in (jalbum.datei) do echo %a %b>>meine.m3u  

Das ganze kannst du gerne noch so verfeinern, dass er nur dann, wenn %b einen Wert hat auch %b geschrieben wird.

Ps: Deine Überschrift ist etwas irrführend.
Jalbum Listen statt M3u
Willst Du das nicht andersherum?

Gruß
Member: bastla
bastla Jan 21, 2010 at 15:19:58 (UTC)
Goto Top
@timobeil
Wird eher
for /f "tokens=1* eol=#" %a in (jalbum.datei) do echo %a >>meine.m3u
sein ...

Grüße
bastla
Mitglied: 60730
60730 Jan 21, 2010 at 15:23:33 (UTC)
Goto Top
Zitat von @bastla:
@timobeil
Wird eher
for /f "tokens=1* eol=#" %a in (jalbum.datei) do echo %a >>meine.m3u
> 
sein ...

...and the winner is - the one and only best bastla in town face-wink
Grüße
bastla

zurück face-wink

Edit:
ich tausche deine 1 gegen meine 2... -> rechts ist doch da, wo der daumen links ist...
for /f "tokens=2* eol=#" %a in (jalbum.datei) do echo %a >>meine.m3u
Member: bastla
bastla Jan 21, 2010 at 15:33:55 (UTC)
Goto Top
@timobeil

Wenn Du tauschst, darf ich das wohl auch face-wink - ich nehme dann Dein %b:
for /f "tokens=1* eol=#" %a in (jalbum.datei) do echo %b >>meine.m3u
Grüße
bastla
Mitglied: 60730
60730 Jan 21, 2010 at 15:40:20 (UTC)
Goto Top
Zitat von @bastla:
@timobeil

Wenn Du tauschst, darf ich das wohl auch face-wink - ich nehme dann Dein %b:
@bastla: Moooment Zahlen zählen nicht
Aber einen Vokal gegen einen Konsonanten tauschen, darfst nur Du face-wink
Grüße
bastla
surüg
Member: bastla
bastla Jan 21, 2010 at 15:56:44 (UTC)
Goto Top
Aber einen Vokal gegen einen Konsonanten tauschen, darfst nur Du face-wink
Merci vielmals face-smile

bastla
Member: pbelcl
pbelcl Jan 21, 2010 at 21:27:27 (UTC)
Goto Top
Danke Leute für Eure Codeschnipsel!!

Ist jedefalls echt lustig euch beim tauschen zuzusehen face-wink

Ich habe zwar jetzt noch keine Anhnung welches eurer Codeschnipsel funktioniert, aber egal!
Werde morgen alle testen und dann eh sehen welches davon klappt.

ich tippe auf

for /f "tokens=2* eol=#" %a in (jalbum.datei) do echo %a >>meine.m3u  


Danke mal vorerst !!
Member: pbelcl
pbelcl Jan 24, 2010 at 10:23:54 (UTC)
Goto Top
Hallo Ihr Beiden,

Habe meine bessere Hälfte ins Kaffeehaus geschickt, und deshalb gerade wieder etwas Zeit mich mit dem Batch zu beschäftigen.
Zuerst mal vermute ich dass "%a" in euren Codeschnipsel eher "%%a" heissen sollte, oder face-wink

Hab meine bestehende Batchdatei mal auf die notwendigsten Dinge reduziert um zu testen.
@echo off

set "Z_LW=l:"   
set "Z_V=Test Test"  
for /f "tokens=2* eol=#" %%i in (Jalbum.txt) do (  
echo "%%i"  
pause
copy "%%i" "%Z_LW%\%Z_V%\%%~nxi" /v /y  
)
pause

Wenn ich:
for /f "tokens=1* eol=#" %%i in (Jalbum.txt) do (  
mache dann ist in der Variable %%i der erste Teil der Jalbum.txt nämlich "DSC_0424.JPG".


Wenn ich:
for /f "tokens=2* eol=#" %%i in (Jalbum.txt) do (  
mache dann ist in der Variable %%i der Anfang des Pfades den ich brauche, aber nur bis zum ersten Space! -> "P:\Fotos"

Da ich in der Textdatei des Jalbum keinen brauchbaren Delimitter habe, fürchte ich dass es schwierig ist den GANZEN String "P:\Fotos DVD\Fotos_12\5. Wiener Fotomarathon\Wertung\DSC_0424.JPG " in die Variable zu bekommen.
Oder hat jemand von Euch noch eine Idee?
Member: bastla
bastla Jan 24, 2010 at 10:37:24 (UTC)
Goto Top
Hallo pcbelcl!
Zuerst mal vermute ich dass "%a" in euren Codeschnipsel eher "%%a" heissen sollte, oder face-wink
Je nachdem - wenn Du zum Testen die Zeile direkt in der CMD-Shell eingibst, nur ein Prozentzeichen - innerhalb eines Batches immer "%%a" ...
Wenn ich:
for /f "tokens=1* eol=#" %%i in (Jalbum.txt) do (
mache dann ist in der Variable %%i der erste Teil der Jalbum.txt nämlich "DSC_0424.JPG".
Deshalb solltest Du auch (analog zu "%a" --> "%b" - TimoBeil hatte mir ja die ausdrückliche Erlaubnis zum Tausch gegeben face-wink) den Inhalt von "%%j" verwenden ...

Grüße
bastla
Member: pbelcl
pbelcl Jan 24, 2010 at 11:55:30 (UTC)
Goto Top
Hi bastla,

Ah ich beginne zu verstehen....

Wenn ich also dann mein Batch so ändere
for /f "tokens=2* eol=#" %%i in (Jalbum.txt) do (  
copy "%%j" "%Z_LW%\%Z_V%\%%~nxi" /v /y  
)

dann ist in der Variable %%j der String "DVD\Fotos_11\Bodypainting Festival 2008\Zelte_SA_DSC_711844.JPG"

Ich habs jetzt mal so abgewandelt:
for /f "tokens=2* eol=#" %%i in (Jalbum.txt) do (  
copy "%%i %%j" "%Z_LW%\%Z_V%\%%~nxj" /v /y  
)
DAS funktioniert auch so weit.
Stellt sich nur die Frage ob er auch "sauber" ist ?

Werd das Ganze jetzt mal wieder in meine ursprüngliche Batch Umgebung einpflegen und melde mich dann wieder .....
Member: pbelcl
pbelcl Jan 24, 2010 at 12:26:40 (UTC)
Goto Top
Hi bastla,

Hab das Ganze jetzt mal wieder in meine haupt Batch eingebaut. Es funktioniert grundsätzlich schon, aber wenn dann in der Echtumgebung im Jalbum Dateinamen ein Space drinnen ist, klappts gleich gar nicht mehr ;-(

in Echt sieht es dann so aus:

for /f "tokens=2* eol=#" %%i in (%LIST_V%\%liste%.txt) do (  
if Exist "%%i %%j" copy "%%i %%j" "%Z_LW%\%Z_V%\%liste%\%%~nxj" /v /y>nul  
if EXIST "%%i %%j" %utildir%\echo kopiere:  %%i %%j  
if NOT EXIST "%%i %%j" %utildir%\echo fehlt:  %%i %%j   
if NOT EXIST "%%i %%j" echo %%i %%j --- fehlt!>>"%Z_LW%\%Z_V%\0_fehlende_Dateien.txt"   

die Variablen haben folgende Inhalte:
%Z_LW% = P:
%Z_V% = CD'S\3 - POCKET PC
%LISTE% = JALBUM TEST
%LIST_V% = P:\PROGS\BATCH\FOTOALBEN

Die Testdatei heißt "jalbum Test.txt"

Ich habs auch schon mit Anführungszeichen probiert,
for /f "tokens=2* eol=#" %%i in ("%LIST_V%\%liste%.txt") do (  

hat auch nicht geklappt ;-(
Member: bastla
bastla Jan 24, 2010 at 13:17:16 (UTC)
Goto Top
Hallo pbelcel!

Du kannst Dich nicht durchringen, die von mir vorgeschlagene Variante
for /f "tokens=1* eol=#" %%i in (%LIST_V%\%liste%.txt) do (
zu testen? Da der gesamte Pfad in "%%j" enthalten ist, sollte der Rest relativ problemlos sein ...

Grüße
bastla
Member: pbelcl
pbelcl Jan 24, 2010 at 13:45:27 (UTC)
Goto Top
Hallo Bastla,

Sorry aber ihr habt mich etwas verwirt, mit eurem tauschen face-wink

Ich hab jetzt mal DEINE Version da eingebaut:
for /f "tokens=1* eol=#" %%i in (%LIST_V%\%liste%.txt do (  
if Exist "%%j" copy "%%j" "%Z_LW%\%Z_V%\%liste%\%%~nxj" /v /y  
if EXIST "%%j" %utildir%\colecho 10 0 kopiere:  %%j  
if NOT EXIST "%%j" %utildir%\colecho 12 0 fehlt:  %%j   
if NOT EXIST "%%j" echo %%j --- fehlt in %liste%!>>"%Z_LW%\%Z_V%\0_fehlende_Dateien.txt"   

Auch hier: wenn die Variable %LISTE% einen Space drin hat z.B. "jalbum Test.txt", dann klappts nicht mehr.
Das Bach sucht dann nach einer Datei "jalbum" ....

Ich glaube ich werde die Dateien einfach mit "_" statt mit Space benennen, ist glaube ich einfacher face-wink
Member: bastla
bastla Jan 24, 2010 at 13:52:20 (UTC)
Goto Top
Hallo pbelcl!

Sorry, da hatte ich dran vorbeigelesen ... face-sad

Versuch es so:
for /f "usebackq tokens=1* eol=#" %%i in ("%LIST_V%\%liste%.txt") do (
Grüße
bastla
Member: pbelcl
pbelcl Jan 24, 2010 at 13:54:45 (UTC)
Goto Top
Hab gerade noch was rausgefunden:

Wenn mein Jalbum.txt in den Fotonamen Space drin hat, z.B:
Bahaia Beach_DSC_7820.JPG	P:\Fotos DVD\Fotos_12\Azoren 2008\Bahaia Beach_DSC_7820.JPG
Bahaia Beach_DSC_7823.JPG	P:\Fotos DVD\Fotos_12\Azoren 2008\Bahaia Beach_DSC_7823.JPG
Bahaia Beach_DSC_8058.JPG	P:\Fotos DVD\Fotos_12\Azoren 2008\Bahaia Beach_DSC_8058.JPG
Bahaia Beach_P1010505.JPG	P:\Fotos DVD\Fotos_12\Azoren 2008\Bahaia Beach_P1010505.JPG
Bahaia Beach_P1010508.JPG	P:\Fotos DVD\Fotos_12\Azoren 2008\Bahaia Beach_P1010508.JPG
Bahaia Beach_P1010512.JPG	P:\Fotos DVD\Fotos_12\Azoren 2008\Bahaia Beach_P1010512.JPG
Bahaia Beach_P1010517.JPG	P:\Fotos DVD\Fotos_12\Azoren 2008\Bahaia Beach_P1010517.JPG
Bahaia Beach_P1010524.JPG	P:\Fotos DVD\Fotos_12\Azoren 2008\Bahaia Beach_P1010524.JPG
Bahaia Beach_P1010529.JPG	P:\Fotos DVD\Fotos_12\Azoren 2008\Bahaia Beach_P1010529.JPG
Bahaia Beach_P1010533.JPG	P:\Fotos DVD\Fotos_12\Azoren 2008\Bahaia Beach_P1010533.JPG

dann klappts leider auch nicht ;-(

Ich fürchte JETZT wird's schön langsam kompliziert ....
Der einzig wirklich brauchbare Anhaltspunkt ist der Laufwerksname "P:\".
Member: bastla
bastla Jan 24, 2010 at 14:03:13 (UTC)
Goto Top
Der einzig wirklich brauchbare Anhaltspunkt ist der Laufwerksname "P:\".
... es sei denn, zwischen dem Namen und dem Pfad befänden sich nicht Leerzeichen, sondern ein TAB - in diesem Fall müsste es mit
for /f "usebackq tokens=1* eol=# delims=    " %%i in ("%LIST_V%\%liste%.txt") do (
gehen (der "delims"-Wert ist ein TAB).

Grüße
bastla
Member: pbelcl
pbelcl Jan 26, 2010 at 06:43:23 (UTC)
Goto Top
Zitat von @bastla:
... es sei denn, zwischen dem Namen und dem Pfad befänden sich nicht Leerzeichen, sondern ein TAB - ....
Super Idee, denn genau so ist es auch!!
Damit klappt dein Codeschnipsel hervorragend !!

Danke bastla für die Hilfe!!
Werd jetzt mal meine ca. 50 Jalbumlisten zusammensammeln und durch das Batch laufen lassen. Bin schon gespannt ob's mit allen geht....

Vielleicht kann man ja das "zusammensammeln" auf automatisieren, mal sehen face-wink

Übrigens: Einen TAB gibt man mit "ALT+009" (am Numblock) ein, falls das jemand noch nicht weiß.
Member: pbelcl
pbelcl Jan 27, 2010 at 18:15:49 (UTC)
Goto Top
Nach einigen Tests muss ich sagen dass es hervorragend funktioniert, danke nochmal!

Einzig mit den Umlauten in den Filenamen der Liste hab ich noch Probleme ;-(
eine Zeile wie diese:
Teesdorf.jpg	P:\Fotos DVD\Fotos_03\ÖAMTC Fahrtechnik.2\Teesdorf.jpg

funktioniert nicht obwohl ich in meinem Batch als ersten Befehl:
chcp 1252
Drin hab.
Ist das abhängig vom Programm welches den Text erstellt ?
Oder kann ich da auch von WYSIWG (what you see is what you get) ausgehen?

Ist zwar nicht SO wichtig, denn ich hatte sowieso vor ALLE Umlaute aus den Fotonamen rauszuwerfen, würde mich aber trotzdem interessieren.....