taekwondoler
Goto Top

Batch über IP-Nummer steuern

Benötige ein Script das sich aufgrund von der TCP-IP Einstellungen Bedingungen erfüllt

Hallo,

ich soll ein Script erstellen, dass folgende Dinge beherrscht:

Es soll automatisch erkennen, in welchem IP-Bereich es eingesetzt wird z. B. 192.168.10.0, oder 172.27.16.0, und entsprechend muss eine Datei kopiert werden.

Mein Script im Moment:
rem
rem Erstellung Verzeichnis und Daten kopieren
xcopy a:\quelle %ProgramFiles%\ziel /i /q
rem

Jetzt habe ich das Programm auf der Festplatte des entsprechenden Rechners, in der jeweiligen Firma.

Jetzt gibt es in diesem Verzeichnis eine mehere Datei, die die jeweiligen IP-Adresse des Servers beinhaltet, mit dem mittels dieses Programmes ein Verbindung herstellt werden soll.

Meine Problem ist jetzt, dass ich mittels dieses Scripts die "ipconfig"-Einstellungen des Rechners auslesen muss, um zu erfahren, in welchem Netz der Rechner hängt.

Aufgrund dieser Variablen möchte ich die entsprechende Datei kopieren. Die zu kopierende Datei könnte ruhig z.B. "192.168.10.0" heissen.

Wie bekomme ich dieses hin?

Gruss


Thomas Wagner
www.world-of-edv.de

Content-Key: 36469

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

Printed on: April 19, 2024 at 08:04 o'clock

Member: maneich
maneich Jul 21, 2006 at 15:31:10 (UTC)
Goto Top
Hallo,

poobiere es mal mit

for /f "skip=3 tokens=2 delims=:" %%e in ('ipconfig') do set x=%%e

bei skip muß du testen, könnte auch 5 sein.

MfG maneich
Member: Biber
Biber Jul 21, 2006 at 16:12:53 (UTC)
Goto Top
...oder Du lässt das "skip" und das Probieren weg und filterst nur die für Dich wichtige Zeile raus.
for /f "tokens=2 delims=:" %i in ('ipconfig^|find "IP-A"') do Set myIP=%~i
echo IP ist %myIP%

Kannst auch hier mit der Forumssuch-Funktion ein paar andere Varianten finden.

Gruß
Biber
Member: Taekwondoler
Taekwondoler Jul 21, 2006 at 16:45:09 (UTC)
Goto Top
Erst mal vielen DANK!!!!

Hab jetzt die komplette IP-Nummer des Rechners. Ich benötige aber noch einen kleinen weiteren Schritt.

Es sollen nur die ersten 24 bit der Netzwerkmaske stehen bleiben (172.27.16.), damit ich bestimmen kann welche Konfigurationsdatei kopiert werden soll.

Der Datei-Namen der Konfigurationsdateien lauten z.b. 172.27.16.txt oder 192.168.21.txt und darin sind eben Konfigurationen zum ansprechen der jeweiligen Server enthalten.

Wie krieg ich die letzten 8 Byte weg, damit ich den Kopiervorgang einleiten kann.

Schöne Grüße

Thomas Wagner
Member: Biber
Biber Jul 21, 2006 at 20:34:11 (UTC)
Goto Top
Auch kein Problem,

nach dem ersten Schritt oben noch eine weitere Zeile:
for /f "tokens=2 delims=:" %i in ('ipconfig^|find "IP-A"') do Set myIP=%~i
for /f "tokens=1-3 delims=." %i in ("%myIP%") do Set myIP=%i.%j.%k
Im ganzen Satz bzw im Batch:
::---snipp GetMyIpContext.bat
@echo off & setlocal
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-A"') do Set myIP=%%~i  
for /f "tokens=1-3 delims=." %%i in ("%myIP%") do Set myIP=%%i.%%j.%%k  
echo Just for debug... MyIp is now [%MyIp%]
If not exist c:\myContexts\%MyIP%.txt (
  echo Keine zur IP passende Datei c:\myContexts\%MyIP%.txt gefunden!
  pause
) else (
rem Mach was mit %MyIp%.txt ....
)
:: ---snapp GetMyIpContext.bat
(ungetestete Skizze)
Biber
Member: Taekwondoler
Taekwondoler Jul 25, 2006 at 06:50:00 (UTC)
Goto Top
Vielen Dank für Eure Hilfe.

Ich möchte aufgrund einiger "alter" Win98 rechner auch noch ne Abfrage drinhaben, welches System läuft (%OS%) und daraufhin entscheiden, ob ipconfig oder winipcfg die Ausgabe der IP-Nummer erzeugen soll.

Ich benötige also für diese Zeile ein IF-Abfrage, soweit ist mir das klar.
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-A"') do Set myIP=%%~i

If %OS%=="Windows_NT" (
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-A"') do Set myIP=%%~i
)else (
for /f "tokens=2 delims=:" %%i in ('winipcfg^|find "IP-A"') do Set myIP=%%~i)

Aber wenn ich das so reinsetze, bricht das Script hier ab und wird nicht durchgezogen...

Bitte weiter um Eure Hilfe. DANKE!!!

Gruss


Thomas
Member: Biber
Biber Jul 25, 2006 at 08:06:19 (UTC)
Goto Top
Moin Thomas,

die Abfrage hat nur einen kleinen Flüchtigkeitsfehler.

Falsch : IF %OS%=="Windows_NT" (
Besser: IF "%OS%"=="Windows_NT" (


Aber/Und:
- Unter Win98 gibt es weder die Variable %OS%
- und wichtiger: die ganzen CMD-Erweiterungen wie erweitertes FOR..IN..DO (FOR /F) oder auch die Tilde-Erweiterung für Variablen gibt es noch nicht.

Du musst also u.U., sollte das Skript auf dem Win98-Rechner laufen, auch syntaktisch darauf eingehen.

Gruß
Biber
Member: maneich
maneich Jul 25, 2006 at 10:48:01 (UTC)
Goto Top
Hallo,

nun ja, wie Du die %OS%-Abfrage händeln mußt, hat Dir Biber ja schon gesagt.

Aber mit winipcfg kannst Du für Deine Zwecke nichts anfangen. Dieses Programm gibt keine Daten zurück wie ipconfig, die Du dann auch übernehmen kannst, sondern zeigt diese Daten nur in einem Windows-Fenster an. Unter Win 98 keine Möglichkeit, diese Daten zu übernehmen.

Bei WinME, das ja bekanntlich ein Zwitter sein soll, laufen beide Programme, ob diese ipconfig die gleiche wie auf W2K oder XP ist weiß ich auch nicht. Das müßtest Du mal testen indem Du die ipconfig auf einen Win98-Rechner kopierst. Zumindest die ipconfig von W2K sollte die gleiche sein und was auf WinME läuft, geht auch problemlos unter Win98.

Aber dann klappt es auch nicht mit for..... oder anderen Windows-Befehlen.

Das einfachste hier ist, Du besorgst Dir über

http://home.mnet-online.de/horst.muc/german.htm

das kleine Freewaretool "LMOD12"

Mit

ipconfig|find /i "IP-Adresse"|lmod /b:, Set ip=[$2]>%temp%\tmp.bat
for %%e in (call del) do %%e %temp%\tmp.bat

erhälst du deine Ip-Adresse in %ip% stehen und hast die temporäre Batch auch wieder gelöscht.

Die "IP-Adresse" bei find müßte dann noch abgeändert werden, wenn Dein ipconfig eine andere Bezeichnung anzeigt.

MfG maneich
Member: Taekwondoler
Taekwondoler Jul 26, 2006 at 05:55:04 (UTC)
Goto Top
erst mal vielen dank, läuft unter win98 nicht sauber durch... was aber nichts macht... kaum zu glauben, aber wir schalten die alten kisten jetzt endlich ab .-))))

gibt immer wieder mal probleme damit... siehe hier...

danke an alle die mitgeholfen haben...
Member: benson
benson Aug 01, 2006 at 16:49:58 (UTC)
Goto Top
@maneich

Aber mit winipcfg kannst Du für Deine Zwecke nichts anfangen. Dieses Programm gibt keine >Daten zurück wie ipconfig, die Du dann auch übernehmen kannst, sondern zeigt diese Daten >nur in einem Windows-Fenster an. Unter Win 98 keine Möglichkeit, diese Daten zu >übernehmen.

Hallo,
das ist so nicht ganz richtig. Auch winipcfg kennt den Schalter /Batch. Weitere Optionen gibt es mit winipcfg /?.

cu
benson
Member: maneich
maneich Aug 01, 2006 at 22:53:22 (UTC)
Goto Top
@benson

Hallo,

nun ja, Du hast recht. Aber damit

winipcfg /batch C:\Windows\Desktop\tmp.txt
type C:\Windows\Desktop\tmp.txt|find /i "IP-Adresse"|lmod /b:, Set ip=[$2]>%temp%\tmp.bat
for %%e in (call del) do %%e %temp%\tmp.bat

ist der Weg zur IP umständlicher und erheblich langsamer.

MfG maneich