kn0cki17
Goto Top

aktuelle IP an bestimmte Stelle in INI-Datei schreiben

Hallo,

folgendes würde ich gern machen.

Ich möchte die IP des jeweiligen Rechners auslesen und dann einen bestimmten Sting in einer .ini Datei durch diese IP ersetzen.

Die IP auslesen funktioniert schon.

@for /F "tokens=13,*" %i in ('ipconfig^|find "IP-Ad"') do (
@echo %i >>c:\test3.txt
)

allerding weiß ich nicht, wie ich in der .ini Datei einen bestimmten Wert durch diese IP ersetzen kann.

Beispielstring wäre:

serverpath=abcdse1,xxx.xxx.xx.xx,9521/*

xxx.xxx.xx.xx müßte durch die IP ersetzt werden.

Kann mir vielleicht jemand behilflich sein.

Vielen Dank schon mal.

Content-Key: 74515

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

Printed on: April 18, 2024 at 02:04 o'clock

Member: bastla
bastla Nov 26, 2007 at 14:55:35 (UTC)
Goto Top
Hallo Kn0cki17 und willkommen im Forum!

Einige Fragen vorweg:

  • Sind die Zeilenblöcke vor und nach dem Beispielstring konstant, oder müssen diese jeweils ausgelesen und in das Ergebnis übernommen werden?
  • Welche Teile Deines Beispielstrings sind konstant bzw zum Auffinden der Zeile geeignet (vermutlich nur "serverpath=")?
  • Ist die IP-Adresse immer (bei Delimiter ",") das zweite Token in der Zeile?
  • Ich nehme mal nicht an, dass sich tatsächlich "xxx.xxx.xx.xx" in der betreffenden Zeile befindet face-wink - richtig?
  • Spricht etwas gegen den Einsatz von VBScript?

Grüße
bastla
Member: Kn0cki17
Kn0cki17 Nov 26, 2007 at 15:09:25 (UTC)
Goto Top
Hallo,

erstmal danke für die schnelle Antwort, hier also meine kurze Antwort.

die Zeilenblöcke über und unter dem Beispielstring sind eigentlich konstant.

Der zu ersetzende String ist wirklich xxx.xxx.xx.xx und alles außer dieser wäre konstant.
Member: bastla
bastla Nov 26, 2007 at 15:35:02 (UTC)
Goto Top
Hallo Kn0cki17!

Wenn wirklich der ganze Rest konstant ist, könntest Du einfach die Zeilen vorher in eine "ini1.txt" und die Zeilen nachher in eine "ini2.txt" packen und damit etwa so verfahren:
@echo off & setlocal
set "Ziel=D:\Irgendeine.ini"  
set "Teil1=D:\ini1.txt"  
set "Teil2=D:\ini2.txt"  

set IP=
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"') do set "IP=%%i"  
if not defined IP echo Keine IP-Adresse gefunden! & goto :eof

set IP=%IP: =%
type "%Teil1%">"%Ziel%"  
echo serverpath=abcdse1,%IP%,9521/*>>"%Ziel%"  
type "%Teil2%">>"%Ziel%"  
Falls das Leerzeichen vor der IP nicht stören sollte, könntest Du sogar noch die Zeile "set IP=%IP: =%" einsparen ...

Grüße
bastla
Member: Pedant
Pedant Nov 26, 2007 at 18:11:06 (UTC)
Goto Top
Hallo Kn0cki17,

Dein IP-Auslesen-Script funktionier bei mir nicht.

Wenn alles konstant ist, ausser der IP, dann kannst Du doch auch die komplette Datei per Batch generieren, dann musst Du nichts austauschen.
Das hat nur die Einschränkung, dass einige Sonderzeichen nicht durch echo ausgegeben werden können, z.B.: <, | und >

Alternativ kannst Du auch die Inhalte splitten und per copy zusammenfügen.
copy anfang.txt + variable.txt + ende.txt fertig.ini


@echo off

:ipconfig-lesen
ipconfig | find "IP-Ad" > %temp%\a.tmp  
type %temp%\a.tmp | find /n " " > %temp%\b.tmp  
type %temp%\b.tmp | find "[2]" > %temp%\c.tmp  
set /p ipnummer_a= < %temp%\c.tmp
set ipnummer_a=%ipnummer_a:~47,15%

:ping-lesen
ping %computername% /n 1 | find "Ping-Sta" > %temp%\d.tmp  
set /p ipnummer_b= < %temp%\d.tmp
set ipnummer_b=%ipnummer_b:~19,-1%
rem set ipnummer_b=%ipnummer_b:~0,-1%

:ini-generieren
echo zeile 1 > dings.ini
echo zeile 2 >> dings.ini
echo zeile 3 >> dings.ini
echo texttexttext %ipnummer_a% texttexttext >> dings.ini
echo texttexttext %ipnummer_b% texttexttext >> dings.ini
echo zeile 5 >> dings.ini
echo zeile 6 >> dings.ini

:aufraeumen
del %temp%\a.tmp
del %temp%\b.tmp
del %temp%\c.tmp
del %temp%\d.tmp
set ipnummer_a=
set ipnummer_b=

:ende
exit


Erklärung:

Hier sind zwei Methoden in einer Batch genutzt.
Die schlechtere Methode kann auskommentiert oder gelöscht werden.

Bei IP-Config ergibt sich das Problem, dass mehrere IP-Nummern vorhanden sein können.

1. Alle Zeilen mit "IP-Ad" werden in a.tmp abgelegt
2. Die Zeilen von a.tmp werden durchnummeriert und in b.tmp gespeichert.
3. Die zweite Zeile ("[2]") von b.tmp wir in c.tmp abgelegt.
Es wird unterstellt, dass die interessante IP sich immer in Zeile 2 befindet.
4. Der Inhalt von c.tmp wird in ipnummer_a gespeichert.
5. ipnummer_a wird getrimmt, ab der Position 47 werden 15 Zeichen genommen.

Bei ping wird hier die Systemvariable %computername% genutzt.
Was das bei Rechnern ausgibt, die mit mehreren Karten in unterschiedlichen Netzwerken stecken, weiß ich nicht.

1. Die Zeile mit der IP von einem ping mit nur einem Packet ( /n 1) wird in d.tmp gespeichert.
2. Der Inhalt von d.tmp wird in ipnummer_b gespeichert.
3. ipnummer_b wird getrimmt, ab der Position 19 werden alle Zeichen bis zum Vorletzten genommen.

Daraus solltest Du Dir was Passendes basteln können.

Gruß Frank
Member: bastla
bastla Nov 26, 2007 at 18:49:55 (UTC)
Goto Top
@Pedant
Das hat nur die Einschränkung, dass einige Sonderzeichen nicht durch echo ausgegeben werden können, z.B.: <, | und >
Kurze Anmerkung: Wenn Du diese Sonderzeichen mit ^ maskierst, klappt auch die Ausgabe mit "echo":
echo ^<^|^> >Sonderzeichen.txt

Grüße
bastla
Member: Kn0cki17
Kn0cki17 Nov 27, 2007 at 07:40:18 (UTC)
Goto Top
Vielen Dank für die Hilfe, hat gut funktioniert.
Member: Pedant
Pedant Nov 27, 2007 at 10:45:21 (UTC)
Goto Top
Hallo basla,

vielen Dank für die Anmerkung, das war sehr hilfreich.

Apropos Nachhilfe:

In vielen Batches finden sich relativ kryptische for-Konstruktionen.
for /? half mir, Deine Konstruktion zu verstehen, aber für ein tiefes Verstehen der for-Syntax ist es nicht geeignet. Google brachte mich da auch nicht weiter.
Kennst Du eine Seite, die mit veranschaulichenden Beispielen, "for" erklärt?


Ich versuch mal Deine for-Anweisung zu erklären:
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"') do set "IP=%%i"  

Führe ipconfig aus und übergebe die Ausgabe des Befehls an find.
Find sucht in jeder Zeile nach der Zeichenfolge "IP-Ad" und gibt alle Zeilen, die die Zeichenfolge enthalten aus.
/f ermöglicht die Angabe von weiteren Optionen. Die Optionen sorgen dafür, dass der Text jeder Zeile gesplittet wird, in diesem Fall am Doppelpunkt. delims=:
tokens=2 weist an, nur den zweiten Teilstring in der Variablen %%i zu speichern, die dann in der weiteren Verarbeitung in der do-Anweisung verwendet wird.

Find "IP-Ad" liefert  
"        IP-Adresse. . . . . . . . . . . . : 192.168.0.100"  

delims=: splittet am Doppelpunkt in
"        IP-Adresse. . . . . . . . . . . ." und " 192.168.0.100"  

tokens=2 wählt für %%i
" 192.168.0.100"  

do set "IP=%%i" bewirkt  
set "IP= 192.168.0.100"  

und das Alles für jede Zeile die find "IP-Ad" in der Ausgabe von ipconfig findet.  

Wenn also von find drei Zeilen mit "IP-Ad" gefunden werden, wird die Variable IP dreimal mit dem Wert von %%i neu belegt. Das Ergebnis ist, dass in IP die zuletzt ausgegebene IP-Adresse von ipconfig gespeichert wird.

Interessiert man sich für die zweite von drei IP-Adressen, so müsste man den Code variiren.
Vermutlich reicht es in den meisen Fällen nach dem Netzwerk-Teil der erwünschten IP-Adresse suchen zu lassen, statt allgemein nach "IP-Ad", also nach z.B. "192.168.0."


Jetzt zu Deiner Set-Anweisung:
set IP=%IP: =%
Diese Zeile hat mich auch einen Moment beschäftigt, bis ich sie verstand.
%Var:Optionen% ist im allgemeinen eine String-Operation, beispielsweise die Extrahierung eines Teilstrings. In Deinem Fall ist es ein "Suchen und Ersetzen", was ich bisher nicht kannte und zwar ersetze alle " " durch "".

Beispiel:
@echo off
set var=Soooofahroor
echo vorher: %var%
set var=%var:oo=e%
echo nachher: %var%
Ausgabe von echo:
vorher: Soooofahroor
nachher: Seefahrer

Gruß Frank
Member: bastla
bastla Nov 27, 2007 at 12:08:50 (UTC)
Goto Top
Hallo Pedant!

Kann nur gratulieren face-smile - so, wie Du es erklärt hast, war mein Beispiel auch gemeint.

Kennst Du eine Seite, die mit veranschaulichenden Beispielen, "for" erklärt?
Da muss ich leider passen - bis auf den Hinweis, dass Du natürlich hier im Forum eine Menge an mehr oder weniger ausführlich dokumentierten Beispielen sowie einige äußerst empfehlenswerte Tutorials (insbesondere von Biber) vorfindest (was Du als Mitglied mit wesentlich höherem "Dienstalter" face-wink als ich ja ohnehin wissen wirst ...).
Noch eine Anmerkung zum Thema "mehrere Netzwerkadapter / IP-Adressen": Wie Du richtig anmerkst, braucht es in diesem Fall ein weiteres Kriterium, um den richtigen Eintrag zu erhalten. Soferne einfach die letzte (weil ohnehin einzige) Adresse verwendet werden kann, klappt es mit meinem obigen Batch. Falls alternativ die erste Adresse benötigt wird, ginge das so:
set IP=
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"') do if not defined IP set "IP=%%i"  
Ansonsten eben ein weiteres "find" (oder "findstr"):
set IP=
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"^|find "192.168.0."') do set "IP=%%i"  
Damit ist einerseits sichergestellt, dass es sich um die IP-Adresse handelt, und zum anderen eben auch noch die für das gewünschte Netzwerk "Zuständige" selektiert.

Grüße
bastla

[Edit] Fehlende Variable IP in "if not defined IP" ergänzt. [/Edit]
Member: Pedant
Pedant Nov 27, 2007 at 12:49:47 (UTC)
Goto Top
Hallo,

mit den Werkzeugen von basla versuche ich gerade die ursprüngliche Aufgabenstellung zu bewerkstellingen, nämlich in einer ini-Datei einen bestimmten Wert durch die IP zu ersetzen.

Das scheitert aber noch an einer Stelle.


Ausgangspunkt ist eine ini-Datei mit festem Inhalt.
Inhalt von allgemeine.ini:
Zeile 1
Zeile 2
serverpath=abcdse1,xxx.xxx.xx.xx,9521/*
Zeile 4

Die Batch, die eine geänderte ini-Datei erzeugen soll:
@echo off

if "%1"=="" (  
   cmd /v:on /k %0 dummyparameter
   exit
)

:ip-auslesen
set IP=
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"') do set "IP=%%i"  
if not defined IP echo Keine IP-Adresse gefunden! & goto :eof
set IP=%IP: =%

:ini-neu-schreiben
cls
echo.
echo Eingabe:
if exist spezielle.ini del spezielle.ini
for /f "delims=" %%i in ('type allgemeine.ini^') do (  
   set zeile=%%i
   echo !zeile!
   echo !zeile:xxx.xxx.xx.xx=192.168.0.100! >> spezielle.ini
)

:test
echo.
echo IP-Nummer: !IP!
echo.
echo Ausgabe:
type spezielle.ini

Hinweis:
Damit das Auswerten der Variablen "zeile" innerhalb der for-Schleife überhaupt funktioniert, ruft sich die Batch am Anfang selbst neu auf und zwar mit der cmd-Option "/v:on".
Das aktiviert die "verzögerte Erweiterung von Variablen" für diese Instanz des cmd.

Die Ausgabe der Batch:

Eingabe:
Zeile 1
Zeile 2
serverpath=abcdse1,xxx.xxx.xx.xx,9521/*
Zeile 4

IP-Nummer: 192.168.1.60

Ausgabe:
Zeile 1
Zeile 2
serverpath=abcdse1,192.168.0.100,9521/*
Zeile 4

Der Knackpunkt ist das Suchen und Ersetzen in der Variablen "zeile" mit der Variablen "IP".
In der Batch verwende ich noch einen festen String "192.168.0.100" und nur so gelingt es bisher.
Funktioniert:
echo !zeile:xxx.xxx.xx.xx=192.168.0.100! >> spezielle.ini

Funktioniert nicht:
echo !zeile:xxx.xxx.xx.xx=!IP!! >> spezielle.ini
Wie kann man hier Variablen verschachten?


@bastla,
... do if not defined set "IP=%%i"  
Ich glaube an der Stelle liegt ein Fehler vor, da nicht angegeben ist, was eventuell nicht definiert wurde. Müsste es nicht wie folgt aussehen?
... do if not defined IP set "IP=%%i"  

Ein funktionierendes Beispiel:
@echo off
if not defined IP set "IP=eins"  
if not defined IP set "IP=zwei"  
if not defined IP set "IP=drei"  
echo IP: %IP%
Ausgabe:
IP: eins

Gruß Frank
Member: Biber
Biber Nov 27, 2007 at 12:59:20 (UTC)
Goto Top
Moin Pedant,

eine Seite, wo der FOR-Befehl anschaulich erklärt und diskutiert wird kenne ich auch nicht.

Aber vielleicht könnten wir hier im Forum, ausgehend von dem Beispiel, das Du so schön analysiert hast mit wenigen Copy&Paste-Klicks ein kleines Tutorial zu dem Thema erstellen.

Deinen letzten Kommentar fände ich jedenfalls sinnvoller nochmals als Tutorial gepostet - hier im aktuellen Thread werden ihn nicht viele auf der Suche nach FOR-Beispielen gezielt finden.

So oder so vielen Dank für die wirklich gut gelungene Erklärung.
Und natürlich wieder mal Dank an bastla für die Vorlage dazu. face-wink

Grüße
Biber
Member: bastla
bastla Nov 27, 2007 at 13:17:36 (UTC)
Goto Top
Hallo Pedant!

Ich glaube an der Stelle liegt ein Fehler vor
Leider ja; ich korrigiere das oben.

Funktioniert nicht:
echo !zeile:xxx.xxx.xx.xx=!IP!! >> spezielle.ini
Wie kann man hier Variablen verschachten?
Hast Du
echo !zeile:xxx.xxx.xx.xx=%IP%! >> spezielle.ini
schon versucht?

... cmd-Option "/v:on" ... aktiviert die "verzögerte Erweiterung von Variablen" für diese Instanz des cmd.
Wo siehst Du den Vorteil gegenüber "setlocal enabledelayedexpansion"?

Grüße
bastla
Member: Biber
Biber Nov 27, 2007 at 13:29:03 (UTC)
Goto Top
Moin Pedant,

hat sich leider überschnitten, mein Vor-Post bezog sich auf deinen vorletzten Kommentar.
zu dem letzten Beispiel (Wechseln/Ersetzen mit Variablen): Es geht schon.

Beispiel/Proof of Concept fürs Erstezen (am Cmd-Prompt):
[DelayedExpansion ist ON, Zeilen beginnend mit ">" sind Eingaben]
>set IP=10.111.222.33
>set "zeile=serverpath=xxx.xxx.xxx"  
>set dummy=xxx.xxx.xxx.xxx
>echo !zeile:%dummy%=%IP%!
serverpath=10.111.222.33,9521/*

In einem Ausschnitt Deines Schnipsels:
 ....setlocal EnableDelayedExpansion
...
if exist spezielle.ini del spezielle.ini
::# nächste Zeile nur Demo
Set IP=192.168.0.100
for /f "delims=" %%i in ('type allgemeine.ini') do (  
   set zeile=%%i
   echo !zeile!
   REM entweder so..
   REM echo !zeile:xxx.xxx.xx.xx=%IP%! 
   REM oder jetzt als längeres, wenn auch überflüssiges Beispiel:
   Call :ReplaceInVarAltMitNeu zeile xxx.xxx.xx.xx 192.168.0.100 
   echo !zeile! 
)

goto :eof

:ReplaceInVarAltMitNeu par1=varname par2=alterString Par3=neuerString
REM Aber: die Variable %zeile% wird NICHT als Wert, nur als Name übergeben
Set "tmpvar=!%1!"  
Set tmpvar=!tmpvar:%2=%3!
set "%1=%tmpvar%"  
Goto :eof
[Ungetestete Skizze]

Grüße
Biber
Member: Pedant
Pedant Nov 27, 2007 at 14:53:31 (UTC)
Goto Top
@bastla,

Hast Du

echo !zeile:xxx.xxx.xx.xx=%IP%! >> spezielle.ini

schon versucht?

Nein, hatte ich nicht, aber es funktioniert, allerdings dachte ich, ich hätte alle Kombinationen von % und ! ausprobiert.

... cmd-Option "/v:on" ... aktiviert die "verzögerte Erweiterung von Variablen" für diese Instanz des cmd.

Wo siehst Du den Vorteil gegenüber "setlocal enabledelayedexpansion"?
Der Vorteil lag darin, dass ich das kannte, das Andere aber nicht.
"setlocal enabledelayedexpansion" ist offensichtlich einfacher und funktioniert auch.


@Biber

Aber vielleicht könnten wir hier im Forum, ausgehend von dem Beispiel, das Du so schön analysiert hast mit wenigen Copy&Paste-Klicks ein kleines Tutorial zu dem Thema erstellen.
Ich bin im Moment noch nicht dazu in der Lage, da ich nur durch Testen und Lesen diese eine, vorgegebene Variante der For-Schleife verstanden habe.
Der For-Befehl im Allgemeinen, bietet aber noch reichlich mir unverständliche Varianten.

Sprungziele per call und Parameter als Subroutienen zu nutzen ist auch eine interessante und für mich neue Methode.


@Kn0cki17

die finale Batch sieht jetzt also so aus:
@echo off

:konfiguration
setlocal enabledelayedexpansion
set quelle=allgemeine.ini
set ziel=spezielle.ini
set suchen=xxx.xxx.xx.xx
set ersetzen=yyy.yyy.yy.yy
set netzwerk=192.168.0.

REM goto letzte_ip_auslesen    - falls die letzte IP benutzt werden soll.
REM goto spezielle_ip_auslesen - falls eine andere IP benutzt werden soll.
REM goto neue_ini_schreiben    - falls fester Text fuer suchen und ersetzten genutzt werden soll.

goto letzte_ip_auslesen

:letzte_ip_auslesen
set IP=
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"') do set "IP=%%i"  
if not defined IP echo Keine IP-Adresse gefunden! & goto ende
set ersetzen=%IP: =%
goto neue_ini_schreiben

:spezielle_ip_auslesen
set IP=
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"^|find "%netzwerk%"') do set "IP=%%i"  
if not defined IP echo Keine IP-Adresse gefunden! & goto ende
set ersetzen=%IP: =%
goto neue_ini_schreiben

:neue_ini_schreiben
if exist %ziel% del %ziel%
for /f "delims=" %%i in ('type %quelle%^') do (  
   set zeile=%%i
   echo !zeile:%suchen%=%ersetzen%! >> %ziel%
)

REM move %ziel% %quelle% - falls das ziel die quelle ersetzen soll.

:ende
Wo steckst Du eigentlich?

Gruß Frank
Member: bastla
bastla Nov 28, 2007 at 00:39:35 (UTC)
Goto Top
Hallo Pedant:

Auch wenn's eigentlich nicht stattfinden soll face-wink - einen hab' ich noch: In ":ziel_ersetzt_quelle" würde ein "move" genügen:
move %ziel% %quelle%

Grüße
bastla
Member: Biber
Biber Nov 28, 2007 at 06:56:08 (UTC)
Goto Top
@bastla
In ":ziel_ersetzt_quelle" würde ein "move" genügen
Noch genauer formuliert:
Statt ":ziel_ersetzt_quelle" würde ein "move" genügen.

SCNR

@Kn0cki17 aka ThreadOwner
Pedants Frage interessiert mich aber auch: Liest Du noch mit?
Wie ist der gefühlte Lösungs-/Beantwortungsgrad Deiner Frage?

Wir chatten ja schon seit zwei Tagen zwar kompetent und kurzweilig, aber eindeutig OffTopic hier rum...
Kann der Thread geschlossen werden oder sind noch Fragen offen?

Grüße
Biber
Member: Pedant
Pedant Nov 28, 2007 at 12:18:44 (UTC)
Goto Top
@bastla,

ich habe das copy+delete durch move ersetzt.


@Biber,

ich nutze Sprungmarken nicht nur zum Anspringen, sondern auch zum Kommentieren und Strukturieren, also um Programmblöcke zu benennen.
In diesem Fall war es aber tatsächlich zuviel des Guten.

Ich habe jetzt
REM quelle_ersetzt_ziel soll nicht stattfinden, deswegen
goto ende

:quelle_ersetzt_ziel
copy %ziel% %quelle%
del %ziel%
reduziert auf
REM move %ziel% %quelle% - falls das Ziel die Quelle ersetzen soll.


Wir chatten ja schon seit zwei Tagen zwar kompetent und kurzweilig, aber eindeutig OffTopic hier rum...
Kann der Thread geschlossen werden oder sind noch Fragen offen?

Dem muss ich in zwei Punkten eindeutig wiedersprechen.
Kurzweilig ist es zumindest für mich nicht. Okay es ist auch nicht das Gegenteil, also langweilig, aber mit Kürze hat es auch nichts zu tun. Es hat mich schon diverse Stunden beschäftigt, meinen Code zu schreiben und den von basta zu verstehen und auch bastla wird seine Code nicht in fünf Minuten runtergeschrieben haben.

Und OffTopic ist es auch nicht. Jeder einzelen Beitrag im Thread nimmt konkreten Bezug auf die ursprüngliche Anfrage und nur zusätzlich wird auch über das Ziel hinaus, aber nicht daran vorbei, diskutiert.

Klingt jetzt vielleicht so, als wäre ich beleidigt, das ist definitiv nicht der Fall, ich wollte das nur kommentieren.

Wozu den Thread eigentlich schließen, auch falls Kn0cki17 sich meldet und sagt sein Problem wäre gelöst?
Reicht es nicht den Thread dann als gelöst zu markieren. Ein Anderer, der das gleiche Problem oder ein sehr ähnliches hat, könnte doch hier sinnvoll anknüpfen.
Ich würde den Thread erst schließen, wenn er tatsächlich ins OffTopic abgleitet.
(Und ironischerweise fängt er mit meinem letzten Absatz damit an.)

Gruß Frank
Member: Biber
Biber Nov 28, 2007 at 17:41:22 (UTC)
Goto Top
Moin Pedant,

<grinz übers ganze Gesicht>
Selbst mich als jemanden, der schon mal auf einer F.D.P.-Wahlkampfveranstaltung länger als 23 Minuten ausgehalten hat und bisher glaubte, alle verbalen Verharmlosungsformen der deutschen Rhetorik gehört zu haben, selbst mich kannst Du mit so etwas begeistern:
und nur zusätzlich wird auch über das Ziel hinaus, aber nicht daran vorbei, diskutiert.
Erklär das mal einem Golfer...

Derart sprachliches Neuland wird eigentlich bei uns ernsthaften, humorlosen IT'lern eher selten betreten.

Aber sei's drum... vielleicht sind wir nicht "am Ziel vorbei" geschossen.
Dennoch steigt natürlich die Gefahr, dass wir hier im Thread Themen diskutieren, die niemand außer uns hier vermuten oder finden wird.
Bestes Beispiel sind oben Deine eigene excellente FOR-Anweisungs-Zerlegung oder auch die Erläuterung des Lösche-alle-Leerzeichen-mit-SET-Befehls.
Kannst Du beides Eins-u-Eins als Tutorial posten - alle sind glücklich, mit einem passenden Titel wird es auch wiedergefunden.

Hier im Thread, unter den Suchworten "IP" und "INI-Datei" ....keine Chance.
Deshalb bin ich eher Anhänger der altägyptschen Weisheit "Neues Thema, neuer Thread."

So, und mein GANZER Kommentar ist hier eindeutig OffTopic. face-wink

Grüße
Biber