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

Batchdatei für Ordnervergleich und anschliessendem Konvertierungsstart

Frage Entwicklung Batch & Shell

Mitglied: SamHell

SamHell (Level 1) - Jetzt verbinden

18.07.2007, aktualisiert 19.07.2007, 2972 Aufrufe, 8 Kommentare

Hallo zusammen!

Aus dem Titel ist es schon teilweise ersichtlich, aber erstmal zur Vorgeschichte:
Ich habe einen Bekannten der eine umfangreiche wma-audiosammlung auf seinem
PC hat. Dieser jemand ist leider sowohl körperlich als auch geistig insoweit beeinträchtigt
das ich ihm seinen PC so eingerichtet habe das er damit mit möglichst wenig klicks
mit dem nötigsten arbeiten kann.

Nun hat er sich einen MP3-Player gekauft der sehr einfach zu bedienen ist, und den er lieb
gewonnen hat, nun spielt dieser allerdings nur mp3´s ab.


In kurz:
Ich habe eine Batchdatei geschrieben, die im WMA-Ordner die wma´s per
converter zu mp3 konvertiert, und diese in einen anderen Ordner verschiebt.

Dabei stoße ich auf 2 Probleme:
- die Unterverzeichnisse werden bei "convert *.wma D:\musik\*mp3" nicht durchsucht.
- und da das bei der Sammlung bei jeder aktualisierung unglaublich lange dauern würde, wäre eine Quellenabfrage nach "if ´ausgabefile schon da´ dann kein convert" nötig



Dazu die Frage: ist das per batch überhaupt möglich, oder is das schon zu komplex
und würde VB oder ähnliches benötigen?


Für etwaige Tips oder Denkanstöße wäre ich überaus dankbar

Nico
Mitglied: bastla
18.07.2007 um 13:33 Uhr
Hallo SamHell und willkommen im Forum!

Vielleicht vorweg: Das wird sich auf jeden Fall mit Batch lösen lassen (wobei vielleicht Dateien/Pfade mit enthaltenem "!" problematisch sein könnten).

Was Du noch etwas genauer beschreiben könntest, ist die Ordnerstruktur. Die .wma-Dateien befinden sich, soweit ich das richtig verstanden habe, in verschiedenen Ordnern. Vermutlich soll dies auch für die erstellten .mp3 gelten - richtig? Am Besten gibst Du gleich die konkreten Pfade an.

Auch die Optionen des verwendeten Konverters wären interessant (vor allem: Pfadangaben für Ein- und Ausgabedateien möglich?).

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
18.07.2007 um 15:41 Uhr
wenn du eine datei folgendermasen convertierst:
convert datei.wma D:\musik\datei.mp3
dann würde das ganze in einer Schleife für mehrere Dateien im Verzeichnis "Quelle" der Batch und deren Unterverzeichnisse so gehen:
01.
@echo off  
02.
chcp 1252 >NUL 
03.
set "Ziel=D:\musik" 
04.
set "Quelle=D:\wmas" 
05.
 
06.
FOR /F "delims=" %%A in ('dir /b /s %Quelle%') do if not exist "%Ziel%\%%~nA.mp3" (convert "%%A" "%Ziel%\%%~nA.mp3")
Wird beim Quelle nichts angegeben, also "Quelle=" wird im Verzeichniss der Batch und deren Unterverzeichnisse gesucht.

miniversum
Bitte warten ..
Mitglied: bastla
18.07.2007 um 16:26 Uhr
Hallo SamHell und miniversum!

Um die Verzeichnisstruktur auch für die .mp3-Dateien zu erhalten, könnte es (in Anlehnung an miniversum's Beispielpfade) so gehen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Ziel=D:\musik" 
03.
set "Quelle=D:\wmas" 
04.
xcopy /e /t "%Quelle%" "%Ziel%\" 
05.
for /r "%Quelle%" %%i in (*.wma) do call :ProcessFile "%%i" 
06.
goto :eof 
07.
:ProcessFile 
08.
set "RelPath=%~dp1" 
09.
set "RelPath=!RelPath:%Quelle%\=!" 
10.
if exist "%Ziel%\RelPath%~n1.mp3" goto :eof 
11.
echo convert %1 "%Ziel%\%RelPath%%~n1.mp3"
Das "echo" vor dem "convert" sorgt dafür, dass der Konvertierungsvorgang durch die Bildschirmausgabe (mit den beiden Pfaden) simuliert wird.

Leider gilt die oben bereits angeführte Einschränkung hinsichtlich der Pfade/Dateien mit "!" - diese werden nicht verarbeitet. Ein (allerdings äußerst unschöner) Workaraound wäre folgende Variante:
01.
@echo off & setlocal 
02.
set "Ziel=D:\musik" 
03.
set "Quelle=D:\wmas" 
04.
xcopy /e /t "%Quelle%" "%Ziel%\" 
05.
for /r "%Quelle%" %%i in (*.wma) do call :ProcessFile "%%i" 
06.
goto :eof 
07.
:ProcessFile 
08.
set "RelPath=%~dp1" 
09.
set "RelPath=%RelPath:~<b>8</b>%" 
10.
if exist "%Ziel%\RelPath%~n1.mp3" goto :eof 
11.
echo convert %1 "%Ziel%\%RelPath%%~n1.mp3"
Die markierte Zahl 8 entspricht der Länge des Quellpfades (D:\wmas) + 1 und müsste vorweg von Hand eingetragen werden.

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
18.07.2007 um 17:08 Uhr
warum nicht so?
01.
@echo off  
02.
chcp 1252 >NUL 
03.
set "Ziel=D:\musik" 
04.
set "Quelle=D:\wmas" 
05.
 
06.
FOR /F "delims=" %%A in ('dir /b /s %Quelle%') do if not exist "%Ziel%\%%~nA.mp3" (md %Ziel%\%%~pA 2>NUL & convert "%%A" "%Ziel%\%%~nA.mp3")
ist zwar nicht ganz so schön aber geht.

miniversum
Bitte warten ..
Mitglied: bastla
18.07.2007 um 17:16 Uhr
@miniversum

Genau genommen entspricht das aber nur dann einem relativen Pfad, wenn der Quellpfad ein Root-Directory ist.

Abgesehen davon müsstest Du den Pfad dann auch beim "if exist" und beim "convert"-Befehl angeben.

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
19.07.2007 um 11:21 Uhr
Ok war vielleicht etwas unüberlegt und auf die schnelle.
Dachte halt ohne ! würdds gehen. Ich habe bei mir Zuhause ne Batch die auch mp3s verarbeiten und Kopieren soll. Dort habe Umlaute und ! berücksichtigt. deshalb auch das chcp 1252 >NUL in meinem code.

miniversum
Bitte warten ..
Mitglied: bastla
19.07.2007 um 11:36 Uhr
@miniversum

Das "chcp 1252" hätte ich eigentlich nicht für nötig erachtet, da sich ja ohnehin der ganze Vorgang in Batch abspielt - auch ein Umlaut müsste eigentlich beim Lesen und wieder Schreiben eines Dateinamens gleich bleiben. Schwierigkeiten machen die Umlaute ja eigentlich nur, wenn sie in der Batchdatei selbst vorkommen und der Batch unter Windows (ANSI) erstellt wurde ...
Wie hast Du das übrigens mit dem "!" gelöst? Mir würde auf die Schnelle eigentlich nur eine vorgeschaltete Batchdatei (ohne "delayedexpansion") zum Ersetzen des "!" durch irgend ein ausgefallenes Zeichen und ein weiterer Batch hinterher zum Zurückverwandeln einfallen ...

Unter anderem solche kleinen Ärgernisse sind es jedenfalls, die mich in derartigen Fällen dann meist doch dazu bringen, VBS zu verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
19.07.2007 um 15:18 Uhr
naja ichhabe so ein Problem nicht. ich verarbeite da jedes Verzeichniss einzeln. (also mit pushd und popd). Da hab ich dann keine relativen Verzeichnisse mehr für das Ziel.
Den aufruf mache ich mit einem call auf ne "Unterfunktion". Ich dachte auch erst es ginge ohne "chcp 1252". Aber es kommt eine Datei drin vor dieich auslese mit Dateinamen. Diese Dateinamen enthalten umlaute und !.

miniversum
Bitte warten ..
Ähnliche Inhalte
Windows 10
Desktopsymbole verschunden und anschliessend verschoben
gelöst Frage von 118080Windows 104 Kommentare

Moin Zusammen Seit in paar Tagen habe ich bei einem Benutzer das Problem, das einfach während dem Arbeiten alle ...

Batch & Shell
Abfrage in einer Batchdatei ?
gelöst Frage von Emily33Batch & Shell3 Kommentare

Hallo alle, ich habe mir eine Diskpart Batchdatei erstellt um öfters USB-Sticks bootfähig zu machen. An einem Punkt komme ...

Batch & Shell
Robocopy in einer Batchdatei
gelöst Frage von CinebatBatch & Shell7 Kommentare

Hallo ich möchte ein einfache Batchdatei erstellen. Ich möchte sämtliche Dateien und Ordner von meiner Festplatte D: auf ein ...

Batch & Shell
Batch Datei drucken und anschließend verschieben
Frage von jehlencoBatch & Shell4 Kommentare

Hallo, ich habe mal wieder eine Frage, jedoch dieses mal kleiner - zu einer Batch Datei :) Ich möchte ...

Neue Wissensbeiträge
Windows 10

Windows 10 Hello-Anmeldung per Foto ausgehebelt

Tipp von kgborn vor 3 StundenWindows 10

Windows Hello ist eine Funktion, um sich per Fingerabdruck-, Gesichts- oder Iriserkennung bei Windows 10-Geräten anzumelden (siehe), setzt aber ...

Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 11 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 11 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1012 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Heiß diskutierte Inhalte
Windows Server
SCCM 2016: PXE Boot des Clients schlägt fehl
Frage von gabeBUWindows Server23 Kommentare

Hallo Zusammen Ich habe eine Testumgebung erstellt um über SCCM 2016 einen virtuellen Client aufzusetzen. Folgende Maschinen habe ich ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen19 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Exchange Server
Exchange empfängt Emails - Kann aber keine Senden
gelöst Frage von niklasschaeferExchange Server11 Kommentare

Hallo, ich stehe gerade bei mir zuhause vor folgender Problemstellung. Gegeben sind 2x Hyper-V Host mit Windows Server 2016 ...