42583
Goto Top

Text verändern funktioniert, aber Leerzeilen und Kommentare verschwinden

Habe eine *.ini Datei, die ich per Script ändern möchte. Habe hier nach "Text ändern/austauschen" gesucht und das Passende gefunden. Es wird mittels FOR Schleife ausgelesen und in dem neuen Dokument die Wunschdaten eingetragen. Klappt auch wunderbar. Nur werden die Leerzeilen und die Zeilen, die mit ";" anfangen weggelassen, werden einfach übersehen. Das ist mir schon vorher aufgefallen, aber bei dieser Datei ist es wirklich ein Problem, da die Formatierung der *.ini Datei erhalten bleiben sollte.
Jemand eine Idee?

Content-Key: 69520

Url: https://administrator.de/contentid/69520

Printed on: April 23, 2024 at 23:04 o'clock

Member: Biber
Biber Sep 26, 2007 at 07:37:49 (UTC)
Goto Top
Moin gunnar-hro,

die FOR/F- Anweisung ignoriert Leerzeilen. Immer.
Die ";"-Zeilen musst Du selbst unterdrückt haben durch den Parameter "EOL=;"

Wenn Du auch die Leerzeilen erhalten willst, dann musst Du die INI-Datei mt einem "FIND /n" oder "FindStr /n" -Befehl inclusive Leerzeilen lesen.

Bitte poste das, was Du bisher hast plus eine (beispielhafte) INI-Datei.
Dann ist es für alle MitleserInnen nachvollziehbarer, wovon wir grad reden.

Grüße
Biber
Mitglied: 42583
42583 Sep 26, 2007 at 17:02:31 (UTC)
Goto Top
Wenn ich in der Firma bin gerne, aber heute hab ich noch meinen Urlaubstag ;) Aber eol hab ich nicht verwendet, da bin ich mir sicher und "gescipt" hab ich auch nichts. Na ja mal schauen, werde es dann jedenfalls posten, damits hier auch andere nachlesen können. Jedenfalls schönen Dank für die Infos. So, werde jetzt erstmal abgrillen gehen ;)
Mitglied: 42583
42583 Sep 27, 2007 at 07:01:36 (UTC)
Goto Top
Anbei das Script:
REG QUERY HKCU\Printers\DevModePerUser /s>C:\temp1.txt
for /f "skip=2 tokens=1,2 delims=:" %%i in (C:\temp1.txt) do (
echo %%j>>C:\temp2.txt
)

for /f "tokens=1,2 delims= " %%i in (C:\temp2.txt) do (
set "snr=%%i"
)
del C:\temp1.txt
del C:\temp2.txt
del C:\temp3.txt

set "pcname=PC 123"


echo HP LaserJet 9999 (von %pcname%) in Sitzung: >C:\nachher1.txt
for /f "usebackq delims=" %%r in (C:\nachher1.txt) do (
echo %%r%snr%>nachher2.txt
)

for /f "usebackq delims=" %%s in (C:\nachher2.txt) do (
set Nach=%%s
)

setlocal enabledelayedexpansion
set "Datei=C:\meso.ini"
set "Von=HP LaserJet 2200"
set "t=%temp%\text.tmp"
if exist "%t%" del "%t%"


for /f "usebackq delims=" %%i in ("%Datei%") do (
set "Line=%%i"
set "Line=!Line:%Von%=%Nach%!"
echo !Line!>>"%t%"
)
move /y "%t%" "%Datei%"
del C:\nachher1.txt
del C:\nachher2.txt

Werde wohl die Zeilen per findstr auflisten, wo Leerzeilen drin sind und dann mittels einer zweiten Variable errechnen lassen, wo eine Leerzeile hinkommt und das mit einem "Echo." tun oder?! . Das könnte ich ja in der Schleife mit einem Unterprogramm tun?!