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

Batch - Suche grösste Zahl in Textfile und kopiere eine andere Zahl aus dieser Zeile

Frage Entwicklung Batch & Shell

Mitglied: banshe

banshe (Level 1) - Jetzt verbinden

18.10.2012, aktualisiert 19.10.2012, 5022 Aufrufe, 7 Kommentare

Hallo zusammen

Meine Batch Kenntnisse sind sehr bescheiden! Ich probiere aktuell etwas zusammen-zu-bauen...

Ich habe ein Textdokument das in wie folgt aufgebaut ist:

ID_DVD_TITLE_4_LENGTH=182.960
ID_DVD_TITLE_5_LENGTH=867.920
ID_DVD_TITLE_6_LENGTH=266.760
ID_DVD_TITLE_7_LENGTH=7766.480
ID_DVD_TITLE_8_LENGTH=652.360
ID_DVD_TITLE_9_LENGTH=212.720


Nun möchte ich mit einem Batch die höchste Zahl in diesem Textdokument suchen - in diesem Beispiel "7766.480" - und aus dieser Zeile die Zahl "7" in eine Variable schreiben.

Schlussendlich benötige ich nur eine Variable mit (in diesem Beispiel) der Zahl "7" drinnen.


Wie stelle ich das an?
Bitte um hilfe!

Herzlichen Dank!
Mitglied: pieh-ejdsch
18.10.2012, aktualisiert um 13:57 Uhr
moin,

gibt es Title_10 und folgende auch noch?

wenn ja dann so: auf der CMD-Line
01.
(for /f "usebackqtokens=1,2delims==" %i in ("datei") do @echo %j)|sort /r >Test && <"Datei" set /p "Zahl="&cmd /von /c "find "!Zahl!" <"Datei" "
Gruß Phil
Bitte warten ..
Mitglied: bastla
18.10.2012, aktualisiert um 17:56 Uhr
... ansonsten zB als Batch
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Ein=D:Textdokument.txt" 
03.
 
04.
set /a Max=0 
05.
set /a Title=0 
06.
for /f "usebackq tokens=4,6,7 delims=_=." %%i in ("%Ein%") do ( 
07.
    if %%j%%k gtr !Max! ( 
08.
        set /a Max=%%j%%k 
09.
        set /a Title=%%i 
10.
11.
12.
echo %Title% mit %Max% Groesse
Grüße
bastla

[Edit] @ PH: Mit "sort" wirst Du aber "7766.480" nicht als größte Zahl erhalten ... [/Edit]
Bitte warten ..
Mitglied: banshe
18.10.2012 um 15:50 Uhr
Absolute spitzenklasse!
Danke euch beiden...

Vielen Dank bastla - funktioniert einwandfrei!
Bitte warten ..
Mitglied: banshe
19.10.2012 um 09:59 Uhr
Leider hat sich ein Problem eingeschlichen und das Script ist mir zu komplex als dass ich den Fehler beheben könnte:
In dem Textfile gibt es noch einen haufen anderer Angaben, von denen aber nur eine Zeile schwierigkeiten macht:

ID_DVD_VOLUME_ID=THE_CORE

In dem Beispiel

ID_DVD_TITLE_4_LENGTH=182.960
ID_DVD_TITLE_5_LENGTH=867.920
ID_DVD_TITLE_6_LENGTH=266.760
ID_DVD_TITLE_7_LENGTH=7766.480
ID_DVD_TITLE_8_LENGTH=652.360
ID_DVD_TITLE_9_LENGTH=212.720
ID_DVD_VOLUME_ID=THE_CORE

Bekomme ich die Zahl 0 mit 0 Groesse


Andere Teile der Textdatei wie:

ID_DVD_TITLE_6_ANGLES=1
ID_DVD_TITLE_7_CHAPTERS=20
ID_DVD_TITLE_7_ANGLES=1
ID_DVD_TITLE_8_CHAPTERS=1
ID_DVD_DISC_ID=2D3B5BE310483B7C5EC4111EB4B29396
ID_VIDEO_FORMAT=0x10000002
ID_VIDEO_BITRATE=8000000
ID_VIDEO_WIDTH=720
ID_VIDEO_HEIGHT=576
ID_VIDEO_FPS=25.000
ID_VIDEO_ASPECT=0.0000
Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
ID_VIDEO_CODEC=ffmpeg2
Audio: no sound
Starting playback...


Machen keine Probleme...
Bitte um hilfe!

Herzlichen Dank...
Bitte warten ..
Mitglied: pieh-ejdsch
19.10.2012, aktualisiert um 11:06 Uhr
moin Bastla,

[Edit] @ PH: Mit "sort" wirst Du aber "7766.480" nicht als größte Zahl erhalten ... [/Edit]

naja dann muss die nichtzahl eben raus:

@banshe
ersetze Bastlas Zeile 06. mit dieser:
for /f "tokens=4,6,7 delims=_=." %%i in ('find "_TITLE_" ^<"%Ein%" ' ) do (
dann sollte es reichen.

Gruß Phil
Bitte warten ..
Mitglied: banshe
19.10.2012 um 12:41 Uhr
Herzlichen Dank!
Klappt super..

Ich habe mich nun ein bisschen in das Thema "Tokens" und "Delims" eingelesen und verstehe in etwa was es bedeutet. Wirklich anwenden kann ich es jedoch "noch" nicht.

Ich habe noch eine kleine Folgefrage:
Wie kann ich in der Textdatei nach einem String (ID_DVD_VOLUME_ID=) suchen und alles hinter dem "=" in eine Variable packen?

Aus folgender Zeile möchte ich schlussendlich "THE_CORE" in der Variablen:

ID_DVD_VOLUME_ID=THE_CORE

Das Wort hinter dem "=" kann aber ändern... Es kann nur ein Wort sein "ELFENLIED" oder auch mehrere "NEON_GENESIS_EVANGELION". Ob die einzellnen Wörter immer mit einem "_" getrennt sind, weiss ich noch nicht...

Mit "find" kann ich zwar den String finden, wie aber den Rest in eine Variable? Oder macht man das mit dem "for /f"?


Herzlichen Dank!
Bitte warten ..
Mitglied: banshe
19.10.2012 um 13:33 Uhr
Ich hab ne Stunde probiert und habe es selber geschafft! =)

for /f "tokens=2 delims==" %%i in ('find "ID_DVD_VOLUME_ID=" ^<"%Ein%" ' ) do (
set NAME=%%i
)


Danke euch für die Hilfe!
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...