Wie kann ich mir eine bestimmte Zeile aus der CMD als Textdatei oder Fehlermeldung ausgeben lassen?
Hallo,
ich benutze einen Befehl um Akkudaten bei Handys auszulesen. Da in dem CMD-Fenster sehr viel Text steht, möchte ich mir eine bestimmte Zeile in ein Textdokument speichern lassen und anzeigen oder noch besser eine "eigene Fehlermeldung" mit MSGBOX anzeigen lassen.
Wie genau ist das möglich, dass nur eine Zeile ausgelesen und angezeigt wird?
1 Antwort
Mit grep kannst du die Ausgabe nach einer Zeile durchsuchen, die einen bestimmten Text enthält und nur diese Zeile ausgeben.
Wenn zum Beispiel der Befehl example die folgende Ausgabe erzeugt:
Foo 12345
Bar 6789
...
erhälst du mit diesem Befehl (bash Syntax):
example | grep Foo
nur die Ausgabe:
Foo 12345
Die Ausgabe kannst du mit dem > Operator in eine Datei umleiten:
example | grep Foo > file.txt
Ob CMD diese Operatoren oder Äquivalente hat, weiß ich nicht. Es gibt aber bash für Windows.
Warum denn unbedingt in einem Popup? Reicht es nicht, wenn die Zeile einfach ausgegeben wird?
Popups sind bei Kommandozeilenanwendungen nicht üblich. Ich weiß nicht, ob das so einfach möglich ist.
okay, da das würde auch reichen. Leider verstehe ich die ANleitung trotzdem nicht wikrlich
Du hast ja irgendeinen Befehl, den du eingibst, um diese lange Ausgabe zu erhalten? Wenn es um Akkudaten geht, vielleicht irgendetwas mit adb?
ja. adb shell dumpsys battery
da gibt es einen Wert der heißt "mSavedBatteryAsoc" die Zahl dahinter hätte ich gerne ausgegeben
Dann gib das in Bash ein:
adb shell dumpsys battery | grep mSavedBatteryAsoc
Als Ausgabe solltest du nur die Zeile mit dem Wert sehen.
-bash: adb: command not found...
adb ist aber drauf und funktioniert in der normalen cmd
Hmm, dann kennt bash den Path nicht. Ich verwende kein Windows, also kann ich nicht sagen, wie sich das beheben lässt.
Vielleicht musst du adb.exe schreiben statt adb? Falls das auch nicht geht, könntest du statt adb den gesamten Pfad zur adb.exe angeben.
mit adb.exe hat es geklappt vielen Dank. aber wie krieg ich diesen Befehl jetzt auf den desktop als Verknüpfung? Im normalem CMD geht es ja nicht. Ich muss immer erst die App Debian öffnen und kann dann dort den Command ausführen
Achso, du verwendest bash in WSL. Normalerweise (also unter Linux) könnte man auf dem Desktop einfach eine .sh Datei anlegen, die diesen Befehl enthält.
Vielleicht ist Windows so schlau und öffnet die Datei mit Debian WSL.
unter was muss ich dass denn dann abspeichern? Habe zum testen jetzt eine Batchdatei erstellt die Debian.exe öffnet. Wie kriege ich das jetzt hin, dass die Datei den gewünschten Befehl in das Fenster schreibt?
Eine Batchdatei mit
bash -c "adb shell dumpsys battery | grep mSavedBatteryAsoc"
sollte funktionieren.
ja jetzt funktioniert es Danke. Ist es möglich den ausgegbenen Text, in dem Fall mSavedBatteryAsoc durch etwas wie Akkuzustand oder so zu ersetzen? Es sollte so Benutzerfreundlich wie möglich für Mitarbeiter sein
Ja, das geht wenn du eine Regex mit bash verwendest und Text mit echo ausgibst.
Hier die entsprechenden Manpages:
okay, probiere ich gleich mal. Noch eine etwas kompliziertere Frage... ich weiß nicht ob es überhaupt möglich ist...
Um den mAH Wert des Akkus auszurechen muss man die ersten 4 Stellen des Wert "Charge Counter" durch den Wert "level" rechnen. Ist das auch möglich, dass das Dort das Ergebnis angezeigt wird?
bash -c "adb shell dumpsys battery | $((grep Charge_counter/grep lebel))"
hab es so probiert, da kommt nur syntax error
Du versuchst, 2 Textzeilen zu dividieren, die neben Zahlen auch andere Zeichen enthalten. Das funktioniert nicht.
Die Werte an sich enthalten nur Zahlen.. wie muss ich es denn machen? Wichtig ist auch das bei charge counter nur die ersten 4 Zeilen genommen werden und nicht alle 7
Hab ich nicht genau verstanden. Habe jetzt bash für Windows aktiviert und installiert. Möchte jetzt das diese cmd Zeile in einer Art popup angezeigt wird