Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

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, 5245 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 ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel: Wenn Wert in Spalte A dann kopiere Zeile (8)

Frage von michi1983 zum Thema Microsoft Office ...

Batch & Shell
Batch bestimme Zeile einer vorherigen batch einfügen (9)

Frage von Frensche zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch um Satz zwischen Anführungszeichen aus 1. Zeile in Textdatei lesen (3)

Frage von georg2204 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Windows 10
Windows 10 Fall Creators Update Fehler (14)

Frage von ZeroCool23 zum Thema Windows 10 ...

Windows Installation
Windows 10 neu installieren (9)

Frage von imebro zum Thema Windows Installation ...