Forum: PC Hard- und Software Batch-Problem


von Leon E. (adiagi)


Lesenswert?

Hallo Freunde,
bin neu hier und habe eine Frage.

Ich versuche mit einem Batch-File eine Zeile von einem INI-File zu lesen
und dann in einer Variablen zu speichern.
Ich bekomm das aber nur soweit hin, dass das ganze INI-File angezeigt
wird.
Hier mal der Code

for /f "tokens=2 delims==;" %%i in ('findstr "EHC_PF_8 ="
C:\INIC_Test_Automation\Flashersions\Flashversions.ini') do set
myMemory=%%i

wenn ich dann echo %myMemory% mache, wird alles angezeigt.
Wie gesagt ich will nur das eine Zeiel ausgegeben wird.

So Sieht das INI-File aus

[Parameters]
INIC_Version_PF_1 =N/A
INIC_Version_PF_2 =N/A
INIC_Version_PF_3 =N/A
INIC_Version_PF_4 =N/A
INIC_Version_PF_5 =N/A
INIC_Version_PF_6 =Hallo
INIC_Version_PF_7 =N/A
INIC_Version_PF_8 =N/A

Ich möchte z.B. dass die 6. Zeile ausgegeben wird.
also das "Hallo" (das "INIC_Version_PF_6 ="  nicht).

Wäre nett wen mir einer was schreiben könnte.
Ich denke, dass es nur eine Zeile Code sein dürfte.

Gruß Agit

von Galenus ein Reisender (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Agit,
da gab es doch mal so ein Ding ich meine es hies Buch. Ob da was bei ist 
gute Frage. Aber schau doch mal rein.

von Leon E. (adiagi)


Lesenswert?

Hey Danke für das Skript,
und ihr müsst nicht gleich sarkastisch werden.
Hab ne Frage gestellt. Wenn du sie nicht beantworten willst ok.
Aber der Rest ist überflüssig.

gruß agit

von Peter II (Gast)


Lesenswert?

was gibt denn

findstr "EHC_PF_8 
="C:\INIC_Test_Automation\Flashersions\Flashversions.ini"

aus? Dort sollte duch nur eine zeile rauskommen. Scheinbar kommt bei dir 
ja dort schon mehr raus, sonst würde ja die for schleife diese zeilen 
nicht bekommen.

von Leon E. (adiagi)


Lesenswert?

Hi Galenus,
tolles skript.
Aber ich wollte das in windows-Command also als batch und nicht vb.

Gruß Agit

von Leon E. (adiagi)


Lesenswert?

HI Peter,

Bei mir wird wenn ich das so mache wie ich gepostet habe immer der 
Letzte Wert des INI-Files Gelesen. Also Am obigen Beispiel:

                INIC_Version_PF_8 =N/A

in myMemory steht dann "N/A". Wie gesagt wollt ich aber die 6.Zeile, das 
"Hallo".


Gruß Agit

von Udo S. (urschmitt)


Lesenswert?

Die Windows Version des grep kommandos sollte 'find' sein, Gib mal "help 
find" in die Kommandozeile.

von Volkmar D. (volkmar)


Lesenswert?

Bei mir funktioniert das mit folgendem Befehl:
1
for /f "tokens=2 delims==" %%i in ('findstr /c:"INIC_Version_PF_6 =" test.ini') do set myMemory=%%i

Beachte den Parameter "/c:" bei findstr.

von Leon E. (adiagi)


Lesenswert?

Hallo,

Danke Udo, Danke Volkmar.
Volkmar jetzt geht es danke, lag wahrscheinlich and dem "/c".

Vielen Danke für eure Hilfe.

Gruß Agit

von Volkmar D. (volkmar)


Lesenswert?

Das "/c" ist notwendig da ein Space im Suchbegriff vorkommt. Ohne den 
Parameter wird das Space als Trenner verwendet und jedes der Worte (also 
auch das Gleichheitszeichen) gesucht. Und da das "=" in fast jeder Zeile 
vorkommt, werden entsprechend viele Zeilen ausgegeben.

von Uhu U. (uhu)


Lesenswert?

Sieh dir mal Ruby an - das läuft auf allen möglichen Plattformen, ist 
sehr mächtig und auch ganz hervorragend geeignet, um irgend welche 
Batch-Jobs zu erledigen, auch mit heftiger OS-Interaktion.

Dagegen kann der ganze halbgare M$-Batch-Mist abstinken, ohne daß ihn 
jemand vermißt...

von Leon E. (adiagi)


Lesenswert?

Hallo,

danke Volker daran habe ich gar nicht gedacht ;(.

Aber jetzt wirds verständlich.

Klappt alles wunderbar.

@UHU

hab schon ein wenig mit ruby gearbeitet. bin deiner meinungm dass es 
besser ist aber leider hat der Arbeitgeber was dagegen ;(.

Danke nochmal

Gruß Agit

von Uhu U. (uhu)


Lesenswert?

Agit A. schrieb:
> aber leider hat der Arbeitgeber was dagegen ;(.

OK, das kann ich verstehen, wenn es um irgendwelche 
Installationsaktionen auf Kundenmaschinen geht - da will man möglichst 
keine Eingriffe machen, die auch noch was anderes beeinflussen könnten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Volkmar Dierkes schrieb:
> Das "/c" ist notwendig da ein Space im Suchbegriff vorkommt.

Wobei dieses Leerzeichen in der Ini-Datei eigentlich nichts zu suchen 
hat. Die muss jemand von Hand erstellt haben, oder mit merkwürdig 
programmierter Software.

Die Win32-API-Funktionen jedenfalls (WritePrivateProfileString &co) 
schreiben keine Leerzeichen vor oder hinter das Gleichheitszeichen.

Die lesenden Funktionen tolerieren so etwas, weswegen es nicht stört.

von Leon E. (adiagi)


Lesenswert?

Hi Rufus,

ja die INI-Files wurden mit Hand erstellt.


Gruß Agit

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.