Batch: String ausschneiden aus txt-Datei?

2 Antworten

ganz einfach:

running.txt

"chrome.exe","12308","Console","1","55.472 K","Unknown","DESKTOP-J89gghjk89\Josef","0:00:00","Nicht zutreffend"
"chrome.exe","12376","Console","1","39.300 K","Unknown","DESKTOP-J89gghjk89\Josef","0:00:03","Nicht zutreffend"
"mame64.exe","1620","Console","11","406.844 K","Running","DESKTOP-J89gghjk89\Josef","0:00:53","MAME: 64th. Street - A Detective Story (World) [64street]"
"Calculator.exe","1380","Console","1","3.552 K","Running","DESKTOP-J89gghjk89\Josef","0:00:00","Rechner"
.... und so weiter

demo.cmd

@echo off
  rem trenne die gefundene Zeile an  [ und].
  rem Token 1 ist  alles vor [ ,Token 2 ist alles nach [ , der  Rest nach ] interessiert uns auch nicht...
  rem wir wollen nur Token 2...  
for /f "tokens=2 delims=[]" %%a in ('findstr "mame" "running.txt"') do (
    set "myVariable=%%a"
)
  rem mal anzeigen
echo zwischen den eckigen Klammern  stand: %myVariable%
pause

allerdings fährst Du noch immer mit der Kirche ums Dorf, Du benötigst nicht einmal die Datei "running.txt"

man kann auch die Ausgabe von tasklist direkt filtern :

@echo off
echo  etwas geduld...
  rem liste  alle Laufenden Prozesse, welche mit "mame" beginnen
for /f "tokens=2 delims=[]" %%a in ('tasklist.exe /fi "ImageName eq mame*" /v') do (
      rem Funde nur mal zur Demo  anzeigen falls mehr  als  einer.
    echo gefunden:%%a
      rem  nur  der letzte  wird gespeichert!
    set "myVariable=%%a"
)
if "%myVariable%"=="" (echo Nix gefunden mit eckigen Klammern  gefunden
) else (echo zwischen den eckigen Klammern  stand: %myVariable%)
pause

viele Wege führen nach Rom:

  rem liste  alle Laufenden Prozesse, welche CaseSensitiv-exakt "MAME:" im Fentertitel habem
for /f "tokens=2 delims=[]" %%a in ('tasklist.exe /v^|find "MAME:"') do (
      rem wie  in den anderen  Beispielen
    echo gefunden:%%a
)

es gibt 1000 Möglichkeiten etwas zu filtern

Glossar:

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
Gintonik 
Fragesteller
 21.03.2021, 15:37

Vielen lieben Dank!!! Ich bin einen Arcade-Automaten am bauen und will gerne ein LED-Panel als Anzeige, welches Spiel gerade läuft. Mit dem Ergebnis kann ich via SSH einen Befehl an den Raspi schicken, welche Grafik er anzeigen soll! Danke!!!

0

Versuch mal folgendes

@echo off

setlocal

set "var=mame64.exe","1620","Console","11","406.844 K","Running","DESKTOP-JU3A0J3\Josef","0:00:53","MAME: 64th. Street - A Detective Story (World) [64street]"

set "After=%var:*[=%"

echo %after:~0,-1%

pause

Gintonik 
Fragesteller
 19.03.2021, 13:27

Funktioniert leider nicht, die Umgebungsvariable wäre nicht definiert...

0
Austria1988  19.03.2021, 13:53
@Gintonik
Warum? Wenn du dir die Zeile einliest und als Variable deklarierst müsste das funktionieren.

set /p var=<textdatei.txt

0