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
GELÖST

Batch - Auslesen einer Zahl mit Kriterien

Frage Entwicklung Batch & Shell

Mitglied: banshe

banshe (Level 1) - Jetzt verbinden

24.10.2012, aktualisiert 09:56 Uhr, 1736 Aufrufe, 7 Kommentare

Ich arbeite derzeit an einem Batch und stehe gerade an einem Problem’chen an.

Der Batch Script liest mir ein Textdokument aus und gibt mir die letzte Zahl aus der Zeile aus, in welcher ein „de“ ist.

Das Textdokument sieht wie folgt aus:

audio stream: 0 format: ac3 (5.1) language: en aid: 128. 
audio stream: 1 format: ac3 (5.1) language: de aid: 129. 
audio stream: 2 format: ac3 (5.1) language: it aid: 130. 
audio stream: 3 format: ac3 (6.1) language: en aid: 131. 
audio stream: 4 format: ac3 (6.1) language: de aid: 132. 
audio stream: 5 format: ac3 (6.1) language: it aid: 133. 
audio stream: 6 format: ac3 (stereo) language: en aid: 134. 
audio stream: 7 format: ac3 (stereo) language: de aid: 135. 
audio stream: 8 format: ac3 (stereo) language: it aid: 136.
Schlussendlich benötige ich nur die letzte Zahl (z.b. 129) ohne dem Punkt am Ende.

Nun möchte ich dass zuerst kontrolliert wird, ob es ein „6.1“ mit „de“ gibt, wenn ja soll er die Zahl entsprechende Zahl (132) nehmen,

wenn nein soll kontrolliert werden, ob es ein „5.1“ mit „de“ gibt, wenn ja soll er die entsprechende Zahl (129) nehmen,

wenn nein soll kontrolliert werden, ob es ein „stereo“ mit „de“ gibt, wenn ja soll er die entsprechende Zahl (135) nehmen,

wenn nein soll kontrolliert werden überhaupt ein „de“ gibt, wenn ja soll er die entsprechende Zahl nehmen.

Ansonnsten soll ein Echo ausgegeben werden….


Mein aktueller Script kann nur auslesen ob es überhaupt ein „de“ gibt…

set "Ein=Textdokument.txt" 
for /f "tokens=10 delims= " %%i in ('find "language: de aid:" ^<"%Ein%" ' ) do ( 
set GERAUDIO=%%i 
set GERAUDIO=%GERAUDIO:~0,-1%  
Echo German Audio Stream ID is: %GERAUDIO%
Wie kann ich die Auswahl zwischen 5.1, 6.1 und stereo realisieren? Bitte um hilfe…


Herzlichen Dank
Mitglied: StefanHuber
24.10.2012 um 10:26 Uhr
Hallo banshe,

vom Prinzip her würde ich es wieder über eine IF Auswahl mit for-Schleifen machen.

Zuerst in einer for-Schleife nach dem Ausdruck 5.1 suchen. Trifft das nicht zu, suchst du in einer weiteren Schleife nach 6.1. Als else kommt dann ja nur noch stereo in Frage...


LG
Bitte warten ..
Mitglied: banshe
24.10.2012 um 10:49 Uhr
Hallo Stefan

Danke für den hint - werde es versuchen!

Da es manchmal folgenden Aufbau gibt:
audio stream: 1 format: ac3 (5.1/6.1) language: de aid: 129.

möchte ich gerne nach "language: de aid:" UND "5.1" suchen... wie mache ich ein solches UND?

('find "language: de aid:" & "5.1" ^<"%Ein%" ' )

Funktioniert nicht...


Gruss
banshe
Bitte warten ..
Mitglied: StefanHuber
24.10.2012 um 11:26 Uhr
Versuch ein doppeltes '&&'
Bitte warten ..
Mitglied: bastla
24.10.2012 um 11:46 Uhr
Hallo banshe!

Für eine UND-Verknüpfung musst Du zweimal filtern:
'find "language: de aid:"^<"%Ein%"^|find "5.1"'
Grüße
bastla
Bitte warten ..
Mitglied: banshe
25.10.2012 um 07:27 Uhr
Hallo bastla!

Vielen Dank für deine Antwort!
Funktionier

Wie würde ich in diesem Fall noch ein drittes "find" einbauen?

Folgende Versuche funktionieren nicht:
'find "language: de aid:"^<"%Ein%"^|find "5.1"|find "ac3"'

'find "language: de aid:"^<"%Ein%"^|find "5.1" & "ac3"'

'find "language: de aid:"^<"%Ein%"^|find "5.1" && "ac3"'


Herzlichen Dank
banshe
Bitte warten ..
Mitglied: bastla
25.10.2012 um 09:14 Uhr
Hallo banshe!

Dass Versionen 2 und 3 nicht funktionieren können, ist klar ("&" dient zum Verknüpfen von Befehlen, wobei aber keine Daten weitergegeben werden, und "&&" detto, allerdings mit der Bedingung, dass der vorige Befehl mit Errorlevel 0 - also ohne Fehler - beendet wurde).

Wenn Du Version 1 noch ein Caret spendierst, sollte die funktionieren:
'find "language: de aid:"^<"%Ein%"^|find "5.1"^|find "ac3"'
Grüße
bastla
Bitte warten ..
Mitglied: banshe
25.10.2012 um 11:15 Uhr
Hallo bastla!

Herzlichen Dank für deine Hilfe!
Alles geklappt....

banshe
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

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

Frage von Manuel1234 zum Thema Batch & Shell ...

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 (21)

Frage von Xaero1982 zum Thema Microsoft ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...