Standort aus Datei per CMD-Datei auslesen?

dinoldo

Cadet 4th Year
Registriert
Juni 2017
Beiträge
104
Hallo Leute,

ich habe eine vorhandene CMD-Batchdatei in der ich eine Ergänzung vornehmen muss.

Aus der ASCII-Datei "C:\Program Files (x86)\MicroStation_V8i_SS3\MicroStation\config\mslocal.cfg" muss ich Standort auslesen.
Dieser steht in der Zeile die mit _KUN_ADMIN beginnt. Der Standort begint immer mit DE- und hat immer 8 Zeichen.
Hinweis: die Zeile _KUN_ADMIN hat evtl. unterschiedliche Länge oder schreibweise. Ich habe deswegen unten alle möglichen Varianten als einzelne Beispiele ausgeführt.

Ausschnit der Datei mslocal.cfg:

Beispiel 1:
...
#-----------------------------------------------------------------------------------------------
# Adminnistrationspfad
_KUN_ADMIN : G:/MB-Technik/DE-LEJ05/Config/MS/Standards/MB/V8i/
#-----------------------------------------------------------------------------------------------
...


Beispiel 2:
...
#-----------------------------------------------------------------------------------------------
# Adminnistrationspfad
_KUN_ADMIN :G:/Mühler-Technik/DE-KUN16/Config/MS/Standards/MB/V8i/
#-----------------------------------------------------------------------------------------------
...


Beispiel 3:
...
#-----------------------------------------------------------------------------------------------
# Adminnistrationspfad
_KUN_ADMIN=G:/Ultimo/DE-WUP01/Config/MS/Standards/MB/V8i/
#-----------------------------------------------------------------------------------------------
...


Als Ergebnis in Beispiel 1 muss: DE-LEJ05 rauskommen.
Als Ergebnis in Beispiel 2 muss: DE-KUN16 rauskommen.
Als Ergebnis in Beispiel 3 muss: DE-WUP01 rauskommen.

Ich denke es muss erstmal nach _KUN_ADMIN und dann nach DE- gesucht werden, oder? Wie mache ich das bitte per CMD-Datei?

Vielen herzlichen Dank im Voraus!

Beste Grüße,
Dino
 
Hallo madmax2010,

sorry - irgendwie bin ich nicht schauer geworden. Muss ich nicht vorher in meiner CFG-Datei nach Zeile mit KUN_ADMIN suchen, bevor ich die Stelle mit DE-..... dinde?

Beste Grüße,
Dino
 
Sonst probier es mal in python :) / einer anderen hochsprache. So skripte schreiben sich leichter darin und du hast jede Menge fertige Funktionalitaet mit er du sowas echt simpel abbilden kannst
 
dinoldo schrieb:
sorry - irgendwie bin ich nicht schauer geworden. Muss ich nicht vorher in meiner CFG-Datei nach Zeile mit KUN_ADMIN suchen, bevor ich die Stelle mit DE-..... dinde?
warum? Es reicht doch wenn er einfach die Zeile beiarbeitet wo das DE matched, oder nicht? Warum nimmst du dafuer kein lumpiges regex? Wenn das so schoen homogen ist, dann ist es ja dankbar. Sowas wie grep im CLI oder Perl als Skriptsprache.
 
So hätte ich es auf die Schnelle realisiert. Ich habe mit FINDSTR noch nicht so viel gearbeitet, daher nutze ich hier das einfache FIND.

Code:
@ECHO OFF
FOR /F "skip=2 delims=/ tokens=3" %%i IN ('FIND /I "_KUN_ADMIN" "C:\Program Files (x86)\MicroStation_V8i_SS3\MicroStation\config\mslocal.cfg"') DO SET Standort=%%i
ECHO Standort = %Standort%

Der Code setzt aber voraus, dass die Standort-Angabe immer in der 2. Unterverzeichnis-Ebene steht. In deinen 3 Beispielen ist das der Fall, aber ist es auch bei allen anderen Firmen immer der Fall?

Im Spoiler ist ein erweiterter Code, falls die (Unter-)Verzeichnis-Struktur doch unterschiedlich ist, also der Standort in der 3. oder noch tieferen Unterverzeischnis-Ebene steckt:
Code:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "skip=2 tokens=*" %%i IN ('FIND /I "_KUN_ADMIN" "C:\Program Files (x86)\MicroStation_V8i_SS3\MicroStation\config\mslocal.cfg"') DO SET KUN_ADMIN_Zeile=%%i
SET KUN_ADMIN_Zeile=%KUN_ADMIN_Zeile:/= %
FOR %%i IN (%KUN_ADMIN_Zeile%) DO (
    SET String=%%i
    IF /I "!String:~0,3!"=="DE-" SET Standort=!String!
)
ECHO Standort = %Standort%

Dieser Code setzt aber dafür voraus, dass die Standort-Angabe keine Leerzeichen enthält!
 
Zuletzt bearbeitet:
Hallo @Darkman.X,

ich habe es getestet in der Regle passt dein Ansatz, aber es wird in der gesamte Datei nach
_KUN_ADMIN gesucht und der letzter Eintrag genommen. Entweder muss der erste Eintrag genommen werden, das gefunden wird oder es muss exaxt von links aus gesehen nach _KUN_ADMIN gesucht werden. Dann würde es passen. Kannst du hierbei bitte helfen?

Beste Grüße,
Dino
 
dinoldo schrieb:
[...] es muss exaxt von links aus gesehen nach _KUN_ADMIN gesucht werden [...]


Code:
@ECHO OFF
FOR /F "delims=/ tokens=3" %%i IN ('FINDSTR /B /I "_KUN_ADMIN" "C:\Program Files (x86)\MicroStation_V8i_SS3\MicroStation\config\mslocal.cfg"') DO SET Standort=%%i
ECHO Standort = %Standort%
 
Zurück
Oben