mcmortar

Per Script eine bestimmte Zeichenkette auslesen und in Variable umbauen

Hallo Zusammen,

mein erster Post hier. Ich hoffe man kann mir helfen.

Kurz zusammengefasst: Obwohl ich eigentlich kein Scripter bin, habe ich vor einigen Jahren mal ein kleines gebastelt, welches seit dem einem Freund den Arbeitsalltag erleichtert. Dieses Script ließt aus einer Textdatei in der 7 Zeile die letzten 5 Stellen aus und überträgt diese in eine Variable, die dann wiederrum an den Aufruf eines Progs angehängt wird. Gelöst habe ich das so:

set LineNo=7
set "line="  
set /a LineNo-=1
for /f %%a in ('more/e +%LineNo% ^< //PFAD\DATEI.txt//') do (  
  if not defined line set "line=%%a"  
)
set "endline=%line:~-5,5%"  
echo %line%
echo %endline%

//PFAD\PROGRAMM.exe// -%endline%

Das Ganze funktionierte jahrelang super, bis die Zahl 6stellig wurde, und (nach genauer Betrachtung) auffieh, dass es auch 1,2,3 und 4 stellige Nummern gibt. Also funktioniert die Syntax "nimm die letzten 5 Stellen" nicht mehr.

Die 7te Zeile der Textdatei ist so aufgebaut:

xyz3000a (wobei a die wichtige Zahl ist und 1-6stellig sein kann)

Meine Idee war also, nach dem erstmaligen auftauchen von 3000 zu suchen und alles dahinter zu nehmen. Leider fehlt mir dafür der Sachverstand. Darum wäre ich über jede Hilfe sehr froh. Irgend jemand eine Idee?

Schon Mal besten Dank
McMortar
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 488966

Url: https://administrator.de/forum/per-script-eine-bestimmte-zeichenkette-auslesen-und-in-variable-umbauen-488966.html

Ausgedruckt am: 10.05.2025 um 09:05 Uhr

140913
Lösung 140913 27.08.2019, aktualisiert am 28.08.2019 um 07:35:17 Uhr
Goto Top
@echo off
set "datei=\\Pfad\datei.txt"  
for /f "delims=" %%a in ('powershell -Executionpolicy Bypass -NoP -C "[regex]::match((gc '%datei%')[6],'3000(\d{1,6})').Groups[1].Value"') do set "num=%%a"  
"\\Pfad\Programm.exe" -%num%  
McMortar
McMortar 28.08.2019 um 08:33:57 Uhr
Goto Top
Hallo psuser,

ganz herzlichen Dank für die schnelle Antwort und Lösung.

Ich hatte gerade Zeit für einen ersten oberflächlichen Test und der sah sehr vielversprechend aus. Tut genau das, was es soll.
Den Thread setzte ich jetzt schon mal auf gelöst. Gebe aber auf jeden Fall noch einmal ein Feedback, wenn es auf Herz und Nieren getestet wurde.

5 von 5 Sterne face-wink