146101
Goto Top

Batch: Ordnerinhalt WAV-Dateien mit Dateiname und Dauer in Minuten:Sekunden sowie Erstellungs- oder Änderungsdatum in CSV schreiben

Habe gesehen, dass vor kurzem dieser Bedarf für Millisekunden beantwortet wurde. Ist das auch wie im Betreff angegeben möglich?

Content-Key: 606619

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

Printed on: April 24, 2024 at 23:04 o'clock

Member: tomolpi
tomolpi Sep 23, 2020 updated at 08:13:49 (UTC)
Goto Top
- - keine Begrüßung- -
Zitat von @146101:

Habe gesehen, dass vor kurzem dieser Bedarf für Millisekunden beantwortet wurde. Ist das auch wie im Betreff angegeben möglich?
Gewiss.

- - keine Verabschiedung

PS: diesen Thread bitte umgehend bearbeiten, siehe auch: How to correctly ask a question
Ansonsten muss ich deine Frage leider löschen, aber ein Mindestmaß an Höflichkeit und Beachtung unserer Forenregeln und der Netiquette kann man ja erwarten face-confused
Gerade als neues Mitglied hier möchtest du ja, dass dir geholfen wird.

tomolpi
Moderator
Member: colinardo
Solution colinardo Sep 23, 2020, updated at Sep 24, 2020 at 11:21:53 (UTC)
Goto Top
Servus,
Joa, ein Minima an Höflichkeit und Anstand gebührt sich eigentlich überall in der Öffentlichkeit, hier antworten dir ja immerhin noch Menschen, keine Roboter!

Du meinst vermutlich diesen Beitrag hier:
Länge von wav-Dateien (in ms) per Batch ermitteln (und speichern)

[OT]Du hättest es der Community hier einfacher gemacht indem du zumindest den Link in deinen Post eingestellt hättest, aber dafür hat die zeit ja wohl auch nicht mehr gereicht. Kurzes anschreiben per PN hätte für diese Kleinigkeit übrigens auch gereicht, dann wäre der Thread hier überflüssig gewesen.[/OT]

Pure Powershell
# Ausgabedatei 
$csv = 'D:\ausgabe.csv'  
# Ordner mit den *.WAV
$ordner = 'D:\Lieder'  
# shell object erstellen
$shell = New-Object -Com Shell.Application
# Dateien auslesen und in CSV exportieren
ls $ordner -File -Filter *.wav | select Name,@{n='Dauer';e={[timespan]::FromTicks($shell.NameSpace((split-path $_.Fullname -Parent)).ParseName((Split-Path $_.Fullname -Leaf)).ExtendedProperty('{64440490-4C8B-11D1-8B70-080036B11A03} 3')).toString('hh\:mm\:ss')}},@{n='Änderungsdatum';e={$_.LastwriteTime.toString('G',[cultureinfo]'de')}} | export-csv $csv -Delimiter ";" -NoType -Encoding UTF8  
# csv öffnen
start $csv
Batch
@echo off & setlocal
chcp 1252 >nul
set "csv=D:\ausgabe.csv"  
set "ordner=D:\Lieder"  
powershell -EP Bypass -C "$shell = New-Object -Com Shell.Application;ls '%ordner%' -File -Filter *.wav | select Name,@{n='Dauer';e={[timespan]::FromTicks($shell.NameSpace((split-path $_.Fullname -Parent)).ParseName((Split-Path $_.Fullname -Leaf)).ExtendedProperty('{64440490-4C8B-11D1-8B70-080036B11A03} 3')).toString('hh\:mm\:ss')}}, @{n='Änderungsdatum';e={$_.LastwriteTime.toString('G',[cultureinfo]'de')}} | export-csv '%csv%' -Delimiter ';' -NoType -Encoding UTF8"  
Grüße Uwe
Mitglied: 146101
146101 Sep 23, 2020 at 20:42:52 (UTC)
Goto Top
Ich freue mich, dass das hier mit der Höflichkeit so streng genommen wird, aber auch, dass meine Frage trotzdem beantwortet wurde.
Natürlich passe ich meine Frage wie gewünscht an und hoffe darauf, dass es so dann passt.
Mitglied: 146101
146101 Sep 23, 2020 at 20:48:53 (UTC)
Goto Top
Wollte gerade bearbeiten, aber würde beim Speichern darauf hingewiesen, dass die Bearbeitung zu umfangreich wäre, da es schon Antworten gäbe...

Hallo,

in meinem ersten Beitrag habe ich eine Frage zum Thema Auflistung von Audiodateien in einem bestimmten Ordner.

Habe gesehen, dass vor kurzem dieser Bedarf für Millisekunden beantwortet wurde. Ich kapiere leider nicht, wie ich den Code ändern könnte,weil ich noch nicht mal weiss, so man sowas nachsehen kann.

Ist der Code auch wie im Betreff angegeben möglich?

Viele Grüße
Michael
Mitglied: 146101
146101 Sep 23, 2020 at 21:33:31 (UTC)
Goto Top
Servus Uwe,

danke, voll abgeliefert!

  • Wenn ich jetzt nicht den ganzen Pfad im CSV brauche, sondern nur die Dateinamen mit Extension, was muss ich ändern?
  • LastWriteTime,CreationTime geht das auch direkt auf deutsch in die CSV auszugeben?
  • Möchte ich jetzt nur LastWriteTime im CSV haben, reicht es ",CreationTime" aus dem Code zu löschen?

Viele Grüße
Michael
Member: colinardo
Solution colinardo Sep 24, 2020 updated at 05:33:31 (UTC)
Goto Top
Zitat von @146101:
  • Wenn ich jetzt nicht den ganzen Pfad im CSV brauche, sondern nur die Dateinamen mit Extension, was muss ich ändern?
  • LastWriteTime,CreationTime geht das auch direkt auf deutsch in die CSV auszugeben?
  • Möchte ich jetzt nur LastWriteTime im CSV haben, reicht es ",CreationTime" aus dem Code zu löschen?

Viele Grüße
Michael
Siehe entsprechende Änderungen im Code oben.

Grüße Uwe
Mitglied: 146101
146101 Sep 24, 2020 updated at 11:14:47 (UTC)
Goto Top
Servus Uwe,

passt soweit, danke!

Scheinbar muss der Umlaut im Änderungsdatum noch berücksichtigt werden, da ein Zeichen zusätzlich im Tabellenfeld landet und das Ä ist kleingeschrieben:

So landet es in der Zelle: Änderungsdatum


Siehst du noch die Möglichkeit die Millisekunden wegzulassen?

Viele Grüße
Michael
Member: colinardo
Solution colinardo Sep 24, 2020 updated at 11:33:19 (UTC)
Goto Top
Zitat von @146101:
Scheinbar muss der Umlaut im Änderungsdatum noch berücksichtigt werden, da ein Zeichen zusätzlich im Tabellenfeld landet und das Ä ist kleingeschrieben:
Für die Verwendung von Umlauten in der Batch musste noch ein chcp in den Code und das File muss mit ANSI Kodierung gespeichert werden, ist oben korrigiert.
Siehst du noch die Möglichkeit die Millisekunden wegzulassen?
Das Format kannst du in der ToString() Methode nach Gusto anpassen also bspw hh\:mm\:ss. Habs dir oben mal hinterlegt.
Siehe dazu auch
https://docs.microsoft.com/de-de/dotnet/standard/base-types/custom-date- ...
Mitglied: 146101
146101 Sep 24, 2020 at 11:49:33 (UTC)
Goto Top
Jetzt landet die Bezeichnung Änderungsdatum so in der Zelle: Änderungsdatum
Member: colinardo
colinardo Sep 24, 2020 updated at 13:04:43 (UTC)
Goto Top
Dann hast du deine Batch im falschen Format gespeichert, funktioniert hier testweise problemlos.
Die Ausgabe der CSV geschieht dann in UTF8, nur als Hinweis, kannst du gerne im Code am Ende im export-csv Part an deine Bedürfnisse anpassen! Ich bin hier jetzt raus.

Viel Erfolg
Grüße Uwe
Mitglied: 146101
146101 Sep 24, 2020 at 14:17:01 (UTC)
Goto Top
Hab die Batch in UTF-8 mit Notepad++ abgespeichert. Ist das falsch?

Da du jetzt raus bist, noch kurz: Wo kann man die Befehle die man nutzen kann nachsehen? Falls ich mal was ändern will?

Danke Dir
Member: colinardo
colinardo Sep 24, 2020 updated at 14:23:01 (UTC)
Goto Top
Zitat von @146101:

Hab die Batch in UTF-8 mit Notepad++ abgespeichert. Ist das falsch?
Ja, speichere sie als ANSI (codepage 1252).
Da du jetzt raus bist, noch kurz: Wo kann man die Befehle die man nutzen kann nachsehen? Falls ich mal was ändern will?

Gebe ich dir gerne:

back-to-topPowershell Leitfaden für Anfänger

back-to-topPflichtlektüre
back-to-topErweiterte Grundlagen
back-to-topZusätzliche Ressourcen