derdoctor
Goto Top

Dateien mit Dateinamen aus beschreibenden Dateien umbennen

Hallo ich bin neu hier, eigentlich Tontechniker muss mich aber viel mit Windows und Linux beschäftigen, allerdings bislang nur mit sehr einfachen DosBatches und ShellScripten, und habe leider zu meinem Thema viele Tips und hinweise gefunden, allerdings nichts wirklich Zielführendes.

Mein Problem:

ich bekomme Täglich Daten geliefert bei denen ein "Datensatz" immer aus 2 Dateien besteht.
Eine davon ist eine Audiodatei, die andere eine beschreibende Textdatei im CSV Format, dh. mit Semikola getrennten Abschnitten.
Ich möchte nun gern die Audiodatei mit den aus der Beschreibenden Datei geparsten Daten umbenennen.
Das können im Extremfall einige 100 sein, die alle unterschiedliche Dateinamen haben (außer den beiden zusammengehörenden txt und wav Dateien).


Ein Beispiel:

12345678.txt
12345678.wav

98765432.txt
98765432.wav

etc etc etc


In den beschreibenden TXT Dateien befinden sich Titelname, Interpret und noch einige andere Daten die hier aber irrelevant sind.

Das auslesen der Textdateien per for /f "tokens=5,6 delims=;" habe ich schon realisiert.
Wobei ich hier immer nur einen Token ausgegeben bekomme obwohl ich doch 2 "Spalten" eingetragen habe, die einzeln sehr wohl funktionieren
und mir das entsprechende Ergebnis liefern

Wie jedoch mache ich die Zuordnung der gerade gelesenen Textdatei zur richtigen Audiodatei??
Geht das was ich vorhabe überhaupt mit einer FOR schleife??

Vielen lieben Dank
Kommentar vom Moderator Biber am 21.01.2010 um 16:45:56 Uhr
Dateien mit Dateinamen aus beschreibenden Dateien umbennen
set /a rgc+=1
643

Content-ID: 134035

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

Ausgedruckt am: 23.11.2024 um 04:11 Uhr

mayho33
mayho33 21.01.2010 um 14:37:38 Uhr
Goto Top
Hi!

Etwa so?

[/code]
'VBS

Dim oShell, oFso
set oShell = CreateObject("wscript.Shell")
Set oFso = CreateObject("scripting.filesystemobject")
AppPath = oFso.GetParentFolderName(WScript.ScriptFullName)

txtFileName = "a.txt"
txtReadName = "B"

If oFso.FileExists(apppath + "\" + txtFileName) Then
oFso.MoveFile apppath + "\" + Mid(txtFileName,1,1) + ".wav", apppath + "\" + txtReadName + ".wav"
End If
[code]

Grüße

Mayho
derdoctor
derdoctor 21.01.2010 um 14:59:32 Uhr
Goto Top
VB ist jetzt nicht so ganz mein Highlight, ich weiß halt nicht was was ist bzw wo ich meine echten "Werte" eintragen muss.

Würde das unter AutoIT laufen??

Aber vielen Dank auf jeden Fall schon mal
bastla
bastla 21.01.2010 um 16:31:58 Uhr
Goto Top
Hallo derdoctor und willkommen im Forum!

Zunächst:
Das auslesen der Textdateien per for /f "tokens=5,6 delims=;" habe ich schon realisiert.
Wobei ich hier immer nur einen Token ausgegeben bekomme...
Wenn Du zB
for /f "tokens=5,6 delims=;" %%a ...
verwendest, stehen die beiden Token in "%%a" und "%%b".
Zusätzlich wirst Du eine Schleife für alle Dateien benötigen, etwa
for /f "delims=" %%i in (*.txt) do if exist "%%~ni.wav" (
    for /f "usebackq tokens=5,6 delims=;" %%a in ("%%i") do echo ren %%~ni.* "%%a - %%b.*"
)
pause
Da Du nicht genau beschreibst, wie umbenannt werden soll, simuliert (durch das "echo" vor dem "ren") mein Beispiel den Ablauf nur ...

Grüße
bastla
derdoctor
derdoctor 21.01.2010 um 19:39:13 Uhr
Goto Top
Hat nach ein paar kleinen Anpassungen geklappt, vielen vielen Dank.

Superforum hier!

Alles Gute vom Doc
bastla
bastla 21.01.2010 um 19:46:46 Uhr
Goto Top
Hallo Doc!

Schön, dass Du's schon selbst hingebogen hast face-smile - zumindest die Zeile
for /f "delims=" %%i in (*.txt) do if exist "%%~ni.wav" (
war eigentlich so:
for /f "delims=" %%i in ('dir /b /a-d *.txt') do if exist "%%~ni.wav" (
gedacht ...

Grüße
bastla