Top-Themen

Aktuelle Themen (A bis Z)

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

Verwendung aller Dateien in einem Ordner zur Weiterverarbeitung - Relative Pfadangabe mit FOR?

Mitglied: bastis06

bastis06 (Level 1) - Jetzt verbinden

22.07.2010 um 12:05 Uhr, 3091 Aufrufe, 11 Kommentare

Guten Tag,

an unserem Lehrstuhl verwenden wir ein neues Programm, mit dem es möglich ist, Kennzahlen aus wav-Dateien auszulesen. Das Programm liest aus einer wav-Datei Informationen aus und speichert diese dann z. B. in einer CSV-Datei. Sollten in der CSV-Datei schon Daten vorhanden sein, wird in dieser eine weitere Zeile angehängt. Leider ist es sehr mühsam, den Programmaufruf immer erneut anzupassen, deshalb suchen wir nach einer Möglichkeit, alle Dateien aus einem Ordner mit dem Programm aufzurufen.

Über jeden Hinweis bin ich sehr dankbar!

Beste Grüße,
bastis06

Der einzelne Aufruf über die Kommandozeile erfolgt in der Regel so:

programmname -C [[rel. Pfad]Konfigurationsdatei] -I [[rel. Pfad]Eingabedatei] -O [[rel. Pfad]Ausgabedatei]

Beispiel:
SMILExtract -C config/paraling_IS10.conf -I wav_files/speech01.wav -O speechoutput.csv


Umgebung:
- Die Eingabedateien liegen in dem Ordner wav_files.
- Das Programm akzeptiert nur relative Pfadangaben.
- Erlaubt sind / und \ als Pfadtrenner.


Ich habe es schon so versucht:

@echo off
for /R wav %%I IN (*.wav) do (
SMILExtract -C config/paraling_IS10.conf -I %%I -O speechoutput.csv
)

Nur leider akzeptiert das Prgramm die absolute Pfadangabe nicht.
Mitglied: digital-nervous-system
22.07.2010 um 12:36 Uhr
Hi,
hast Du die Möglichkeit die Powershell zu verwenden? Wenn ja, würde ich das etwa so machen

$smileextract = "path to exe"
$wav_folder = ".\"
foreach ($i in (ls $wav_folder -filter *.wav))
{
& "$smileextract -C config/paraling_IS10.conf -I $i -O speechoutput.csv"
}

Das script dann in das wav_folder Verzeichnis legen und ab dafür ;)

Gruß
Jürgen
Bitte warten ..
Mitglied: digital-nervous-system
22.07.2010 um 12:41 Uhr
Das Problem was ich hier übrigens noch sehe, ist, dass wenn du das so mit ner Schleife machen willst an das speechoutput.csv noch irgendwas dranhängen musst (zb. "wav-datei_speechoutput.csv" oder so), sonst überschreibt er ja immer wieder die gleiche Datei mit nem neuen wav-output oder?
Bitte warten ..
Mitglied: bastis06
22.07.2010 um 13:53 Uhr
Hallo Jürgen,

vielen Dank für Deinen Post. Das verwendete Betriebssystem ist Win7, die Powershell wäre also vorhanden. Bisher habe ich noch nie mit der Powershell gearbeitet, mein Vorwissen ist also gleich null. Trotzdem habe ich das Skript angepasst (komplette Pfadangabe zur exe) und versucht mit > powershell juergenskript.ps auszuführen.

Dann habe ich gemerkt, dass zur Ausführung von Skripten die Sicherheitseinstellungen geändert werden müssen. Das wäre zwar an meinem Rechner möglich, nicht aber an allen Mitarbeiterrechnern.

Kennst Du noch eine einfache Batch-Alternative?
Bitte warten ..
Mitglied: digital-nervous-system
22.07.2010 um 13:59 Uhr
Hi,

naja mit Batch kenn ich mich zwar schon recht gut aus - aber Schleifen und For-Statements in Batch find ich grauenvoll ^^

aber was du meinst ist einfach, du musst die Execution policy setzen, die steht wahrscheinlich im Moment auf "Restricted"

öffne einfach die powershell als admin und gib ein "Set-ExecutionPolicy Remotesigned"

danach sollte das script laufen

Gruß Jürgen
Bitte warten ..
Mitglied: bastis06
22.07.2010 um 15:19 Uhr
Hey ho,

jetzt läuft zumindest das Skript. Es gibt aber folgende Fehler zurück:

==> Fehler A

PS C:\opensmile\wav_samples> .\aufruf_alle.ps1
Die Benennung "c:\opensmile\SMILEextract.exe -C config/paraling_IS10.conf -I mu
sic01.wav -O speechoutput.csv" wurde nicht als Name eines Cmdlet, einer Funktio
n, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie
die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), u
nd wiederholen Sie den Vorgang.
Bei C:\opensmile\wav_samples\aufruf_alle.ps1:5 Zeichen:2

& <<<< "$smileextract -C config/paraling_IS10.conf -I $i -O speechoutput.csv

"
+ CategoryInfo : ObjectNotFound: (c:\opensmile\SM...peechoutput.c
sv:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

==> Fehler B

Es fehlt die Pfadangabe zur Input-wav-Datei (siehe Beispiel am Anfang).

Dir ein dickes Danke für die Unterstützung!

Grüße,
Sebastian
Bitte warten ..
Mitglied: digital-nervous-system
22.07.2010 um 15:25 Uhr
Hey Sebastian,

ok, zweiter Versuch

01.
$smileextract = "c:\opensmile\SMILEextract.exe" 
02.
$wav_folder = ".\" 
03.
foreach ($i in (ls $wav_folder -filter *.wav)) 
04.
05.
	&$smileextract -C config/paraling_IS10.conf -I $i -O $i_speechoutput.csv 
06.
}
diesmal sollte auch für jedes wav file eine eigene csv erzeugt werden. Wo liegt denn diese config datei? ..\wav_folder\config\paraling_IS10.conf ?

Gruß
Jürgen
Bitte warten ..
Mitglied: Biber
22.07.2010 um 15:31 Uhr
Moin bastis06,

willkommen im Forum.
Um nochmals kurz auf die Nur-Batch-mit-FOR-Variante zurückzukommen...

Wenn ich deine Aufgabenstellung richtig interpretiere, dann erwartet dein Programm SMILExtract ja die relativen Pfadangaben deshalb, weil auch das Unterverzeichnis "config" (und nicht nur das Unterverzeichnis "wav_files") unterhalb des gerade zufälligen Verzeichnisses liegen muss.

Von daher würde ich erst noch einmal verifizieren, ob es denn auch mit "absoluten" Verzeichnisangeaben nicht klappt,
wenn sowohl "config" wie "wav_files"-Verzeichnis absolut angegeben werden.

Falls nun wider Erwarten wirklich eine Absulte Pfadangabe nicht möglich ist... okay, nehmen wir auch hin. Dann also

  • VOR und NACH der FOR-Anweisung noch mit "PushD 'verzOberhalbWavFiles' bzw 'PopD' das richtige Verzeichnis zum Aktuellen machen
  • und dann eine FOR-Anweisung ohne "/R" über das Unterverzeichnis "wav_files" ausführen

Im Ausführungsteil kannst du ja "fest verdrahtet" als Dateiangabe stehen haben "wav_files\%%~nxi" statt "%%i".

Nochmal zu den Variableninhalten der Laufvariablen "%%i" in den FOR-Varianten
  
>for  %i in (d:\temp\wav_files\*.wav) do @echo %i 
d:\temp\wav_files\demo1.wav 
d:\temp\wav_files\demo2.wav 
d:\temp\wav_files\demo3.wav 
## Hier ein reines FOR %%i auf einen absoluten Pfad mit Datei-Wildcars. %%i ist ->voller Pfad+Dateiangabe 
 
(=15:26:07  D:\temp\wav_files=) 
>for  %i in (*.wav) do @echo %i 
demo1.wav 
demo2.wav 
demo3.wav 
## Hier ein reines FOR %%i OHNE Pfadangabe mit Datei-Wildcars. %%i ist ->nur Dateiangabe 
 
(=15:26:13  D:\temp\wav_files=) 
>for /r %i in (*.wav) do @echo %i 
D:\temp\wav_files\demo1.wav 
D:\temp\wav_files\demo2.wav 
D:\temp\wav_files\demo3.wav 
 
## Hier ein rekursives FOR /R %%i OHNE Pfadangabe mit Datei-Wildcars. %%i ist ->voller Pfad Dateiangabe
Mit dem Zurechtstutzen auf "%%~nxi" reduzierst du es wieder auf "nur Name+Extension" (ohne Pfad)

Summa summarum:
01.
@echo off 
02.
PushD "D:\einOberverzeichnisVonWav_Files" 
03.
for  %%I IN (wav_files\*.wav) do ( 
04.
SMILExtract -C config/paraling_IS10.conf -I wav_files\%%~nxI -O speechoutput.csv 
05.
06.
PopD
Grüße
Biber
Bitte warten ..
Mitglied: bastis06
22.07.2010 um 15:36 Uhr
Hm, jetzt sieht der Fehler so aus. Die Outputdatei kann ruhig immer dieselbe sein. Das Programm SMILEextract prüft, ob die Outputdatei bereits vorhanden ist. Falls sie vorhanden ist, wird am Ende eine weitere Zeile eingefügt.

""Die Benennung "c:\opensmile\SMILEextract.exe" wurde nicht als Name eines Cmdlet
, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt.
Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofer
n enthalten), und wiederholen Sie den Vorgang.
Bei C:\opensmile\wav_samples\aufruf_alle.ps1:7 Zeichen:2

& <<<< $smileextract -C config/paraling_IS10.conf -I $i -O speechoutput.csv

+ CategoryInfo : ObjectNotFound: (c:\opensmile\SMILEextract.exe:S
tring) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException""
Bitte warten ..
Mitglied: digital-nervous-system
22.07.2010 um 15:38 Uhr
ich sag ja, grauenvoll.. *lach*
Bitte warten ..
Mitglied: bastis06
23.07.2010 um 09:53 Uhr
Hallo Biber,

herzlichen Dank für Deine Ausführung. Es funktioniert nun ohne Probleme. Aus irgendeinem Grund wurde die Variable im FOR Befehl bei Verwendung der Option /R nicht gekürzt. Ohne /R geht jetzt alles (Unterverzeichnisse wären zwar schön gewesen, sind aber nicht notwendig.

Dir und digital-nervous-system ein gutes WE,
bastis06
Bitte warten ..
Mitglied: Biber
23.07.2010 um 10:35 Uhr
Moin bastis06,

bitte prüfe aber noch mal dieses hier
Von daher würde ich erst noch einmal verifizieren, ob es denn auch mit "absoluten" Verzeichnisangeaben nicht klappt,
wenn sowohl "config" wie "wav_files"-Verzeichnis absolut angegeben werden.

--> denn dann hätten wir etwas mehr Spielraum.

Andernfalls... natürlich lässt sich die Unterverzeichnisdurchrödelei (schriftdeutsch: "rekursive Abarbeitung") auch einbauen.

Ich hatte darauf verzichtet, weil ich die Diskrepanz zwischen dem von dir verwendeten FOR/R-Schalter und der Aussage "die Inputdateien liegen immer im Unterordner 'wav_files'" nicht auflösen konnte.
Ich hatte mich dann dafür entscheiden, mal anzunehmen, dass Aussage b) wahr ist.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Basic

VBSrcipt wscript.shell.run mit relativer Pfadangabe und Parameterübergabe ausführen

Frage von eldorado1Basic13 Kommentare

Hallo, ich habe eine HTML Anwendung (hta) geschrieben in der ich ein VBScript über einen Button aufrufe. Meine Anwendung ...

Batch & Shell

Batch: Pfadangabe in Datei ändern

gelöst Frage von NephrisBatch & Shell6 Kommentare

Ich musste mich bislang nur sehr rudimentär mit batch beschäftigen. Nun komme gelange ich deutlich an meine Grenze, und ...

Batch & Shell

Dateien trotz Verwendung kopieren

Frage von 112TimoBatch & Shell2 Kommentare

Hallo ich möchte Dateien mit der PowerShell kopieren. Diese gibt mir aber zurück, dass die Dateien gerade in Verwendung ...

Batch & Shell

Umlaute in Pfadangaben

gelöst Frage von goodbytesBatch & Shell8 Kommentare

Hallo, ich stehe leider immer noch vor dem leidigen Thema Umlaute in Batches :- Bei Dateinamen und in den ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 14 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 20 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

SAN, NAS, DAS
Qnap TS-453S Pro - Anbindung Active Directory
Frage von JuckieSAN, NAS, DAS13 Kommentare

Hallo zusammen, ich habe hier eine Qnap TS-453S Pro die sich mal so absolut gar nicht in das Active ...