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
GELÖST

Batch über IP-Nummer steuern

Frage Entwicklung Batch & Shell

Mitglied: Taekwondoler

Taekwondoler (Level 1) - Jetzt verbinden

21.07.2006, aktualisiert 02.08.2006, 4816 Aufrufe, 10 Kommentare

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
Mitglied: maneich
21.07.2006 um 17:31 Uhr
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.

Mit freundlichen Grüßen maneich
Bitte warten ..
Mitglied: Biber
21.07.2006 um 18:12 Uhr
...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
Bitte warten ..
Mitglied: Taekwondoler
21.07.2006 um 18:45 Uhr
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
Bitte warten ..
Mitglied: Biber
21.07.2006 um 22:34 Uhr
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:
01.
::---snipp GetMyIpContext.bat 
02.
@echo off & setlocal 
03.
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP-A"') do Set myIP=%%~i 
04.
for /f "tokens=1-3 delims=." %%i in ("%myIP%") do Set myIP=%%i.%%j.%%k 
05.
echo Just for debug... MyIp is now [%MyIp%] 
06.
If not exist c:\myContexts\%MyIP%.txt ( 
07.
  echo Keine zur IP passende Datei c:\myContexts\%MyIP%.txt gefunden! 
08.
  pause 
09.
) else ( 
10.
rem Mach was mit %MyIp%.txt .... 
11.
12.
:: ---snapp GetMyIpContext.bat
(ungetestete Skizze)
Biber
Bitte warten ..
Mitglied: Taekwondoler
25.07.2006 um 08:50 Uhr
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
Bitte warten ..
Mitglied: Biber
25.07.2006 um 10:06 Uhr
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
Bitte warten ..
Mitglied: maneich
25.07.2006 um 12:48 Uhr
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.

Mit freundlichen Grüßen maneich
Bitte warten ..
Mitglied: Taekwondoler
26.07.2006 um 07:55 Uhr
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...
Bitte warten ..
Mitglied: benson
01.08.2006 um 18:49 Uhr
@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
Bitte warten ..
Mitglied: maneich
02.08.2006 um 00:53 Uhr
@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.

Mit freundlichen Grüßen maneich
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
IDE & Editoren
gelöst IP und DNS per Batch ändern (9)

Frage von andyw5 zum Thema IDE & Editoren ...

Batch & Shell
gelöst Batch um mehrere IP-Adressen via Ping auf Erreichbarkeit zu prüfen (5)

Frage von Galindiesel zum Thema Batch & Shell ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV (2)

Frage von Matzus87 zum Thema Batch & Shell ...

Firewall
gelöst Site-to-Site-VPN und Cisco VPN-Client von gleicher IP (2)

Frage von TripleDouble zum Thema Firewall ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...