Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

aktuelle IP an bestimmte Stelle in INI-Datei schreiben

Frage Entwicklung Batch & Shell

Mitglied: Kn0cki17

Kn0cki17 (Level 1) - Jetzt verbinden

26.11.2007, aktualisiert 28.11.2007, 4537 Aufrufe, 17 Kommentare

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.
Mitglied: bastla
26.11.2007 um 15:55 Uhr
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 - richtig?
  • Spricht etwas gegen den Einsatz von VBScript?

Grüße
bastla
Bitte warten ..
Mitglied: Kn0cki17
26.11.2007 um 16:09 Uhr
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.
Bitte warten ..
Mitglied: bastla
26.11.2007 um 16:35 Uhr
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:
01.
@echo off & setlocal 
02.
set "Ziel=D:\Irgendeine.ini" 
03.
set "Teil1=D:\ini1.txt" 
04.
set "Teil2=D:\ini2.txt" 
05.
 
06.
set IP= 
07.
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"') do set "IP=%%i" 
08.
if not defined IP echo Keine IP-Adresse gefunden! & goto :eof 
09.
 
10.
set IP=%IP: =% 
11.
type "%Teil1%">"%Ziel%" 
12.
echo serverpath=abcdse1,%IP%,9521/*>>"%Ziel%" 
13.
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
Bitte warten ..
Mitglied: Pedant
26.11.2007 um 19:11 Uhr
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


01.
@echo off 
02.
 
03.
:ipconfig-lesen 
04.
ipconfig | find "IP-Ad" > %temp%\a.tmp 
05.
type %temp%\a.tmp | find /n " " > %temp%\b.tmp 
06.
type %temp%\b.tmp | find "[2]" > %temp%\c.tmp 
07.
set /p ipnummer_a= < %temp%\c.tmp 
08.
set ipnummer_a=%ipnummer_a:~47,15% 
09.
 
10.
:ping-lesen 
11.
ping %computername% /n 1 | find "Ping-Sta" > %temp%\d.tmp 
12.
set /p ipnummer_b= < %temp%\d.tmp 
13.
set ipnummer_b=%ipnummer_b:~19,-1% 
14.
rem set ipnummer_b=%ipnummer_b:~0,-1% 
15.
 
16.
:ini-generieren 
17.
echo zeile 1 > dings.ini 
18.
echo zeile 2 >> dings.ini 
19.
echo zeile 3 >> dings.ini 
20.
echo texttexttext %ipnummer_a% texttexttext >> dings.ini 
21.
echo texttexttext %ipnummer_b% texttexttext >> dings.ini 
22.
echo zeile 5 >> dings.ini 
23.
echo zeile 6 >> dings.ini 
24.
 
25.
:aufraeumen 
26.
del %temp%\a.tmp 
27.
del %temp%\b.tmp 
28.
del %temp%\c.tmp 
29.
del %temp%\d.tmp 
30.
set ipnummer_a= 
31.
set ipnummer_b= 
32.
 
33.
:ende 
34.
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
Bitte warten ..
Mitglied: bastla
26.11.2007 um 19:49 Uhr
@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":
01.
echo ^<^|^> >Sonderzeichen.txt
Grüße
bastla
Bitte warten ..
Mitglied: Kn0cki17
27.11.2007 um 08:40 Uhr
Vielen Dank für die Hilfe, hat gut funktioniert.
Bitte warten ..
Mitglied: Pedant
27.11.2007 um 11:45 Uhr
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:
01.
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.

01.
Find "IP-Ad" liefert 
02.
"        IP-Adresse. . . . . . . . . . . . : 192.168.0.100" 
03.
 
04.
delims=: splittet am Doppelpunkt in 
05.
"        IP-Adresse. . . . . . . . . . . ." und " 192.168.0.100" 
06.
 
07.
tokens=2 wählt für %%i 
08.
" 192.168.0.100" 
09.
 
10.
do set "IP=%%i" bewirkt 
11.
set "IP= 192.168.0.100" 
12.
 
13.
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:
01.
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:
01.
@echo off 
02.
set var=Soooofahroor 
03.
echo vorher: %var% 
04.
set var=%var:oo=e% 
05.
echo nachher: %var%
01.
Ausgabe von echo: 
02.
vorher: Soooofahroor 
03.
nachher: Seefahrer
Gruß Frank
Bitte warten ..
Mitglied: bastla
27.11.2007 um 13:08 Uhr
Hallo Pedant!

Kann nur gratulieren - 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" 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:
01.
set IP= 
02.
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"):
01.
set IP= 
02.
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]
Bitte warten ..
Mitglied: Pedant
27.11.2007 um 13:49 Uhr
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.
01.
Inhalt von allgemeine.ini: 
02.
Zeile 1 
03.
Zeile 2 
04.
serverpath=abcdse1,xxx.xxx.xx.xx,9521/* 
05.
Zeile 4
Die Batch, die eine geänderte ini-Datei erzeugen soll:
01.
@echo off 
02.
 
03.
if "%1"=="" ( 
04.
   cmd /v:on /k %0 dummyparameter 
05.
   exit 
06.
07.
 
08.
:ip-auslesen 
09.
set IP= 
10.
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"') do set "IP=%%i" 
11.
if not defined IP echo Keine IP-Adresse gefunden! & goto :eof 
12.
set IP=%IP: =% 
13.
 
14.
:ini-neu-schreiben 
15.
cls 
16.
echo. 
17.
echo Eingabe: 
18.
if exist spezielle.ini del spezielle.ini 
19.
for /f "delims=" %%i in ('type allgemeine.ini^') do ( 
20.
   set zeile=%%i 
21.
   echo !zeile! 
22.
   echo !zeile:xxx.xxx.xx.xx=192.168.0.100! >> spezielle.ini 
23.
24.
 
25.
:test 
26.
echo. 
27.
echo IP-Nummer: !IP! 
28.
echo. 
29.
echo Ausgabe: 
30.
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.

01.
Die Ausgabe der Batch: 
02.
 
03.
Eingabe: 
04.
Zeile 1 
05.
Zeile 2 
06.
serverpath=abcdse1,xxx.xxx.xx.xx,9521/* 
07.
Zeile 4 
08.
 
09.
IP-Nummer: 192.168.1.60 
10.
 
11.
Ausgabe: 
12.
Zeile 1 
13.
Zeile 2 
14.
serverpath=abcdse1,192.168.0.100,9521/* 
15.
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.
01.
Funktioniert: 
02.
echo !zeile:xxx.xxx.xx.xx=192.168.0.100! >> spezielle.ini
01.
Funktioniert nicht: 
02.
echo !zeile:xxx.xxx.xx.xx=!IP!! >> spezielle.ini
Wie kann man hier Variablen verschachten?


@bastla,
01.
... 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?
01.
... do if not defined IP set "IP=%%i"
Ein funktionierendes Beispiel:
01.
@echo off 
02.
if not defined IP set "IP=eins" 
03.
if not defined IP set "IP=zwei" 
04.
if not defined IP set "IP=drei" 
05.
echo IP: %IP%
01.
Ausgabe: 
02.
IP: eins
Gruß Frank
Bitte warten ..
Mitglied: Biber
27.11.2007 um 13:59 Uhr
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.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
27.11.2007 um 14:17 Uhr
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
01.
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
Bitte warten ..
Mitglied: Biber
27.11.2007 um 14:29 Uhr
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]
01.
>set IP=10.111.222.33 
02.
>set "zeile=serverpath=xxx.xxx.xxx" 
03.
>set dummy=xxx.xxx.xxx.xxx 
04.
>echo !zeile:%dummy%=%IP%! 
05.
serverpath=10.111.222.33,9521/*
In einem Ausschnitt Deines Schnipsels:
01.
 ....setlocal EnableDelayedExpansion 
02.
... 
03.
if exist spezielle.ini del spezielle.ini 
04.
::# nächste Zeile nur Demo 
05.
Set IP=192.168.0.100 
06.
for /f "delims=" %%i in ('type allgemeine.ini') do ( 
07.
   set zeile=%%i 
08.
   echo !zeile! 
09.
   REM entweder so.. 
10.
   REM echo !zeile:xxx.xxx.xx.xx=%IP%!  
11.
   REM oder jetzt als längeres, wenn auch überflüssiges Beispiel: 
12.
   Call :ReplaceInVarAltMitNeu zeile xxx.xxx.xx.xx 192.168.0.100  
13.
   echo !zeile!  
14.
15.
 
16.
goto :eof 
17.
 
18.
:ReplaceInVarAltMitNeu par1=varname par2=alterString Par3=neuerString 
19.
REM Aber: die Variable %zeile% wird NICHT als Wert, nur als Name übergeben 
20.
Set "tmpvar=!%1!" 
21.
Set tmpvar=!tmpvar:%2=%3! 
22.
set "%1=%tmpvar%" 
23.
Goto :eof
[Ungetestete Skizze]

Grüße
Biber
Bitte warten ..
Mitglied: Pedant
27.11.2007 um 15:53 Uhr
@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:
01.
@echo off 
02.
 
03.
:konfiguration 
04.
setlocal enabledelayedexpansion 
05.
set quelle=allgemeine.ini 
06.
set ziel=spezielle.ini 
07.
set suchen=xxx.xxx.xx.xx 
08.
set ersetzen=yyy.yyy.yy.yy 
09.
set netzwerk=192.168.0. 
10.
 
11.
REM goto letzte_ip_auslesen    - falls die letzte IP benutzt werden soll. 
12.
REM goto spezielle_ip_auslesen - falls eine andere IP benutzt werden soll. 
13.
REM goto neue_ini_schreiben    - falls fester Text fuer suchen und ersetzten genutzt werden soll. 
14.
 
15.
goto letzte_ip_auslesen 
16.
 
17.
:letzte_ip_auslesen 
18.
set IP= 
19.
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"') do set "IP=%%i" 
20.
if not defined IP echo Keine IP-Adresse gefunden! & goto ende 
21.
set ersetzen=%IP: =% 
22.
goto neue_ini_schreiben 
23.
 
24.
:spezielle_ip_auslesen 
25.
set IP= 
26.
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-Ad"^|find "%netzwerk%"') do set "IP=%%i" 
27.
if not defined IP echo Keine IP-Adresse gefunden! & goto ende 
28.
set ersetzen=%IP: =% 
29.
goto neue_ini_schreiben 
30.
 
31.
:neue_ini_schreiben 
32.
if exist %ziel% del %ziel% 
33.
for /f "delims=" %%i in ('type %quelle%^') do ( 
34.
   set zeile=%%i 
35.
   echo !zeile:%suchen%=%ersetzen%! >> %ziel% 
36.
37.
 
38.
REM move %ziel% %quelle% - falls das ziel die quelle ersetzen soll. 
39.
 
40.
:ende
Wo steckst Du eigentlich?

Gruß Frank
Bitte warten ..
Mitglied: bastla
28.11.2007 um 01:39 Uhr
Hallo Pedant:

Auch wenn's eigentlich nicht stattfinden soll - einen hab' ich noch: In ":ziel_ersetzt_quelle" würde ein "move" genügen:
01.
move %ziel% %quelle%
Grüße
bastla
Bitte warten ..
Mitglied: Biber
28.11.2007 um 07:56 Uhr
@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
Bitte warten ..
Mitglied: Pedant
28.11.2007 um 13:18 Uhr
@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
Bitte warten ..
Mitglied: Biber
28.11.2007 um 18:41 Uhr
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.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Windows Server
gelöst Terminalserver .ini Datei unter C:Windows (8)

Frage von geocast zum Thema Windows Server ...

Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Batch & Shell
gelöst Variable aus ini Datei auslesen und weiterverwenden (17)

Frage von n0cturne zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...