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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 36469
Url: https://administrator.de/contentid/36469
Ausgedruckt am: 25.11.2024 um 02:11 Uhr
10 Kommentare
Neuester Kommentar
Auch kein Problem,
nach dem ersten Schritt oben noch eine weitere Zeile:
(ungetestete Skizze)
Biber
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:for /f "tokens=1-3 delims=." %i in ("%myIP%") do Set myIP=%i.%j.%k
::---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
Biber
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
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
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
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
@maneich
Hallo,
das ist so nicht ganz richtig. Auch winipcfg kennt den Schalter /Batch. Weitere Optionen gibt es mit winipcfg /?.
cu
benson
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
@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
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