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
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.
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
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.
Hi Galenus, tolles skript. Aber ich wollte das in windows-Command also als batch und nicht vb. Gruß Agit
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
Die Windows Version des grep kommandos sollte 'find' sein, Gib mal "help find" in die Kommandozeile.
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.
Hallo, Danke Udo, Danke Volkmar. Volkmar jetzt geht es danke, lag wahrscheinlich and dem "/c". Vielen Danke für eure Hilfe. Gruß Agit
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.
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...
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.