Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

per batch neue dateien in verzeichnis auslesen, dateinamen als variable in xml datei einfügen.

Frage Entwicklung Batch & Shell

Mitglied: richtig

richtig (Level 1) - Jetzt verbinden

31.08.2007, aktualisiert 18.10.2012, 11149 Aufrufe, 11 Kommentare

hallo zusammen,

um was geht es:
auf einer html seite befindet sich ein flash player inkl. playlist. die playlist liegt dort in einer xml datei vor. in der playlist sind alle dateinamen eines bestimmten verzeichnisses enthalten sowie der autor und titel des jeweiligen stückes.

bsp.:
im verzeichnis /media liegt die datei titel_autor.flv und die datei titel2_autor.flv

die playlist.xml datei ist folgendermaßen aufgebaut:

<?xml version="1.0" encoding="utf-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/;>"
<trackList>

<track>
<title>titel</title>
<creator>autor</creator>
<location>media/titel_autor.flv</location>
</track>

<track>
<title>titel2</title>
<creator>autor</creator>
<location>media/titel2_autor.flv</location>
</track>

</trackList>
</playlist>
mein problem:
bisher musste jede einzelne datei zunächst in das verzeichnis /media geladen werden, anschließend die playlist bearbeitet und in das stammverzeichnis des flash players geladen werden.

mein ziel:
toll wäre, wenn man alles automatisieren könnte: ein batch-skript liest das verzeichnis aus, in dem die videos gespeichert werden und gibt die dateinamen als variable weiter (evtl. auch nur die NEUEN dateien). jeder dateiname wird nun in die xml datei eingefügt (zeile 4) und mit den entsprechenden tags versehen. teile des dateinamens sollten dann als titel und autor verwendet werden. eventuell könnte man dann alles noch per ftp uploaden.

meine bitte:
ich habe sehr begrenzte batch kenntnisse und möchte diese aufgabe nutzen, um tiefer einzusteigen. es wäre super, wenn mir jemand mal ein paar hilfestellungen geben könnte; welche befehle ich brauche, wo ich eventuell ein paar beispiele für die einzelnen befehle finden kann.

ich danke euch schonmal und wünsche einen guten start ins wochenende ;)
grussascha
Mitglied: Biber
31.08.2007 um 12:50 Uhr
Moin grussascha,

könntest Du bitte den zweiten Teil des folgenden Zitats etwas konkretisieren bitte?

und gibt die dateinamen als variable weiter (evtl. auch nur die NEUEN dateien). jeder dateiname wird nun in die xml datei eingefügt (zeile 4) und mit den entsprechenden tags versehen. teile des dateinamens sollten dann als titel und autor verwendet werden

Am Besten mit Beispielen.

Danke
Biber
Bitte warten ..
Mitglied: MRosoft
31.08.2007 um 13:02 Uhr
Die Dateien heißen z.B. 99luftballons_Nena.Flv

in der XML steht dann

<track>
<title>99luftballons</title>
<creator>Nena</creator>
<location>media/99luftballons.flv</location>
</track>




Bitte korigiert mich wenn ich das falsch wiedergegeben habe.
Bitte warten ..
Mitglied: richtig
31.08.2007 um 13:50 Uhr
fast. wenn du beispielsweise eine datei hast mit dem namen nena_99luftballons.flv dann sollte folgender textblock in die xls eingefügt werden:

<track>
<title>99luftballons</title>
<creator>nena</creator>
<location>media/nena_99luftballons.flv</location>
</track>

ich könnte mir aber auch vorstellen, dass das gestartete skript eine eingabe für title und creator fordert, damit ich evtl. auch einer mediendatei mit dem namen mov0001.flv einen titel und autor zuweisen kann.

grussascha
Bitte warten ..
Mitglied: richtig
03.09.2007 um 15:34 Uhr
hallo,

erste erfolgserlebnisse konnte ich am wochenende verbuchen. ich schaffe es zumindest schonmal einen textblock in der gewünschten formatierung auszugeben. das verzeichnis enthält beispielsweise drei flv-dateien. MVI_3101.flv, MVI_3102.flv und MVI_3103.flv

der code hierfür sieht so aus:
@echo off
dir *.flv /b >>mediadaten.txt
for /F "tokens=1 delims=_." %%i in (mediadaten.txt) do set title=%%i
for /F "tokens=2 delims=_." %%j in (mediadaten.txt) do set author=%%j
for /F %%k in (mediadaten.txt) do set filename=%%k
echo ^<track^> >>playlist.txt
echo ^<title^>%title%^<^/title^> >>playlist.txt
echo ^<creator^>%author%^<^/creator^> >>playlist.txt
echo ^<location^>media^/%filename%^<^/location^> >>playlist.txt
echo ^<^/track^>

das ergebnis in der playlist.txt:
<track>
<title>MVI</title>
<creator>3103</creator>
<location>media/MVI_3103.flv</location>
</track>

problem: ich bekomme immer nur die letzte datei der auflistung in mediadaten.txt als textblock angezeigt. leider nicht pro datei einen textblock (so sollte es aussehen):
<track>
<title>MVI</title>
<creator>3101</creator>
<location>media/MVI_3101.flv</location>
</track>
<track>
<title>MVI</title>
<creator>3102</creator>
<location>media/MVI_3102.flv</location>
</track>
<track>
<title>MVI</title>
<creator>3103</creator>
<location>media/MVI_3103.flv</location>
</track>

außerdem brauche ich jetzt noch eine funktion, die kopf und fußdaten der playlist datei in die playlist.txt einträgt. alles in allem sollte dann so aussehen:

--------- kopfzeilen ----------
<?xml version="1.0" encoding="utf-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/;>"
<trackList>

---------- trackliste ----------
<track>
<title>MVI</title>
<creator>3101</creator>
<location>media/MVI_3101.flv</location>
</track>
<track>
<title>MVI</title>
<creator>3102</creator>
<location>media/MVI_3102.flv</location>
</track>
<track>
<title>MVI</title>
<creator>3103</creator>
<location>media/MVI_3103.flv</location>
</track>

---------- fußzeilen ----------
</trackList>
</playlist>

eine idee, wie ich da weitermachen kann?

grussascha
Bitte warten ..
Mitglied: richtig
05.09.2007 um 10:34 Uhr
ok, etwas verkürzen kann ich die sache ja, indem ich das erstellen einer temporären txt einfach sein lasse und den DIR befehl in die for schleife einbinde: ('dir *.flv /b').

problem allerdings immernoch... und da komme ich einfach nicht weiter, obwohl ich jetzt schon seit 3 tagen tutorials und beiträge durchforste:

for /f "token=1,2 delims=." %%1 ('dir *.flv /b') do echo %%1

so, %%1 gibt mir nun untereinander alle werte für das entsprechende token an. hier also untereinander alle präfixe der dateien, die sich im verzeichnis befinden und mit .flv enden. bei datei1.flv, datei2.flv und datei3.flv im verzeichnis also:

datei1
datei2
datei3

setze ich %%1 nun als umgebungsvariable %dat1% dann bekomme ich als ausgabe immer nur den letzten der aufgelisteten werte, da die anderen ja immer durch den folgenden wert überschrieben wurden. in diesem fall ergibt das:

set dat1=%%1
echo %dat1%
--- ausgabe ---
datei3

wie kann ich diesen einzelnen ausgaben denn nun verschiedene umgebungsvariablen zuweisen? ich möchte nämlich im weiteren verlauf die drei präfixe wieder aufrufen. sprich:

datei1 soll zu %dat1%
datei2 soll zu %dat2% etc. werden

mal sehn, ob mir da jemand weiterhelfen kann
danke und grussascha
Bitte warten ..
Mitglied: MRosoft
05.09.2007, aktualisiert 18.10.2012
Schau mal hier vielleicht kommst Du damit weiter ist ja sowas ähnliches


http://www.administrator.de/forum/ordnernamen-mit-mp3-information-und-i ...
Bitte warten ..
Mitglied: bastla
06.09.2007 um 20:37 Uhr
Hallo richtig!

Das, was Du mit den Dateinamen vorhast, solltest Du nicht auf später verschieben, sondern gleich erledigen, etwa (rein handwerklich) so:
01.
@echo off & setlocal 
02.
cd /d "D:\media" 
03.
set "PL=playlist.txt" 
04.
set "Typ=flv" 
05.
 
06.
::Kopf 
07.
echo ^<?xml version="1.0" encoding="utf-8"?^>>"%PL%" 
08.
echo ^<playlist version="1" xmlns="http://xspf.org/ns/0/"^>;>>"%PL%" 
09.
echo ^<trackList^>>>"%PL%" 
10.
 
11.
::Rumpf 
12.
for %%i in (*.%Typ%) do ( 
13.
	for /f "tokens=1* delims=_" %%a in ('echo %%~ni') do ( 
14.
		echo ^<track^>>>"%PL%" 
15.
		echo ^<title^>%%a^<^/title^>>>"%PL%" 
16.
		echo ^<creator^>%%b^<^/creator^>>>"%PL%" 
17.
		echo ^<location^>media^/%%~nxi^<^/location^>>>"%PL%" 
18.
		echo ^<^/track^>>>"%PL%" 
19.
20.
21.
 
22.
::Fuß 
23.
echo ^</trackList^>>>"%PL%" 
24.
echo ^</playlist^>>>"%PL%"
Um die Lösung etwas flexibler zu gestalten, werden in der ersten Schleife alle passenden Dateien (*.%Typ%) gelesen und nur der Dateiname (%%~ni) in der zweiten Schleife als Eingabe verwendet. Damit wird erreicht, dass sowohl Titel als auch Autor auch einen oder mehrere Punkte aufweisen dürfen. Mit "tokens=1*" wird als zusätzlich nur das erste Auftreten von "_" als Trennung Titel/Autor interpretiert, sodass im (unwahrscheinlichen?) Fall mehrerer enthaltener "_" keine Namensbestandteile verloren gehen.

Aufgrund Deiner Vorlage noch fest "verdrahtet" ist der Pfad "media", weshalb am Anfang in das entsprechende Verzeichnis (bitte anpassen) gewechselt wird - hier wäre noch eine variable Lösung zu überlegen.

Grüße
bastla

[Edit] Da im Tag <location> ja eigentlich immer der "originale" Dateiname stehen muss, habe ich die entsprechende Zeile dahingehend abgeändert. [/Edit]
Bitte warten ..
Mitglied: richtig
06.09.2007 um 22:34 Uhr
hallo bastla,

vielen dank!!! sieht ganz gut aus. ich werde es a. s. a. p. ausprobieren. so wie's aussieht schachtelsts du den for befehl mehrfach ineinander, und fängst die parameter, bevor sie überschrieben werden können, ab, um sie weiterzuverarbeiten; hab ich das richtig erkannt? also mal in meinem laien-batch-talk formuliert...

sieht echt super aus. muss das mal stück für stück durchgehen, ums auch zu kapieren. aber schonmal herzlichsten dank für die arbeit, die du dir gemacht hast. ich melde mich wieder, wenn ichs getestet habe.

danke und guten rutsch ins wochenende schonmal
grussascha
Bitte warten ..
Mitglied: richtig
12.09.2007 um 09:14 Uhr
hallo bastla, hallo an alle anderen,

hat etwas gedauert... bin aber gestern mal endlich wieder dazu gekommen. und ich kann nur sagen: perfekt! ich hab die verzeichnisse angepasst und es hat schonmal sofort 1a funktioniert.

wie könnte man es erreichen, dass das verzeichnis auch gemischte dateitypen enthalten kann? das wäre der einzige punkt, über den es sich noch lohnen würde nachzudenken. es kann auch mal sein, dass ein mp3 oder jpg von dem player geladen werden soll.

ich habe etwas mit den delims und tokens rumprobiert, bekomme das aber nicht so recht hin, da ich dann, wie du schon oben erwähnt hast, die dateinamen nicht wirklich flexibel gestalten kann.

hast du da noch eine idee?

danke schonmal und gruß
sascha
Bitte warten ..
Mitglied: bastla
12.09.2007 um 12:24 Uhr
Hallo richtig!

Das könnte dann so gehen:
01.
@echo off & setlocal 
02.
cd /d "D:\media" 
03.
set "PL=CSV-playlist.txt" 
04.
set "Typ=flv jpg mp3" 
05.
 
06.
::Kopf 
07.
echo ^<?xml version="1.0" encoding="utf-8"?^>>"%PL%" 
08.
echo ^<playlist version="1" xmlns="http://xspf.org/ns/0/"^>;>>"%PL%" 
09.
echo ^<trackList^>>>"%PL%" 
10.
 
11.
::Rumpf 
12.
for %%t in (%Typ%) do ( 
13.
	for %%i in (*.%%t) do ( 
14.
		for /f "tokens=1* delims=_" %%a in ('echo %%~ni') do ( 
15.
			echo ^<track^>>>"%PL%" 
16.
			echo ^<title^>%%a^<^/title^>>>"%PL%" 
17.
			echo ^<creator^>%%b^<^/creator^>>>"%PL%" 
18.
			echo ^<location^>media^/%%~nxi^<^/location^>>>"%PL%" 
19.
			echo ^<^/track^>>>"%PL%" 
20.
21.
22.
23.
 
24.
::Fuß 
25.
echo ^</trackList^>>>"%PL%" 
26.
echo ^</playlist^>>>"%PL%"
Die einzelnen in der "set"-Zeile angeführten Typen müssen durch Leerstellen getrennt sein.

Grüße
bastla
Bitte warten ..
Mitglied: richtig
13.09.2007 um 14:22 Uhr
ah, super. so viel muss man da gar nicht ändern. wusst nicht, dass ich oben auch mehrere dateiendungen angeben kann.

also, danke für die super hilfe. ich werde noch einen anderen aufmachen, da ich nun an einem problem mit der synchronisierung von einem ftp verzeichnis und einem lokalen verzeichnis habe.

langsam komm ich dem batchen auch auf die schliche ;) kannst ja in den anderen thread mal reinschaun... ich zähl auf deine hilfe.

danke nochmal
grussascha
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

Batch & Shell
Per Batch aktuell angemeldete User auslesen (1)

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...