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-Script zum herausfinden der IP

Frage Entwicklung Batch & Shell

Mitglied: Pinkywesen

Pinkywesen (Level 1) - Jetzt verbinden

30.12.2009, aktualisiert 04:25 Uhr, 6289 Aufrufe, 7 Kommentare

Fehlermeldung in einem Script zum herausfinden der IP Adresse

Guten Tag liebe Administrator.de Benutzer,
Ich habe ein Script zum herausfinden der IP. Leider kriege ich immer eine Fehlermeldung wenn ich es starte. Ich weiß leider auch nicht wo das Problem liegt. Hier das Script.

01.
@echo off 
02.
VER |find /i "Windows 95" >NUL 
03.
IF NOT ERRORLEVEL 1 GOTO 9598ME 
04.
VER |find /i "Windows 98" >NUL 
05.
IF NOT ERRORLEVEL 1 GOTO 9598ME 
06.
VER |find /i "Windows Millennium" >NUL 
07.
IF NOT ERRORLEVEL 1 GOTO 9598ME 
08.
VER | find "XP" > nul 
09.
IF %errorlevel% EQU 0 GOTO XP 
10.
VER | find "2000" > nul 
11.
IF %errorlevel% EQU 0 GOTO 2000 
12.
VER | find "NT" > nul 
13.
IF %errorlevel% EQU 0 GOTO NT 
14.
VER | find "Microsoft Windows [Version 6" > nul 
15.
IF %errorlevel% EQU 0 GOTO Vista 
16.
VER | find "Microsoft Windows [Version 5" > nul 
17.
IF %errorlevel% EQU 0 GOTO 2003 
18.
goto unknown 
19.
:unknown 
20.
echo OS: Unknown >> temp.txt 
21.
goto 2 
22.
:9598ME 
23.
echo OS: Windows 95 98 ME >> temp.txt 
24.
goto 1 
25.
:NT 
26.
echo OS: Windows NT >> temp.txt 
27.
goto 1 
28.
:2003 
29.
echo OS: Windows Server 2003 >> temp.txt 
30.
goto 1 
31.
:2000 
32.
echo OS: Windows 2000 >> temp.txt 
33.
goto 1 
34.
:XP 
35.
echo OS: Windows XP >> temp.txt 
36.
goto 1 
37.
:Vista 
38.
echo OS: Vista or Windows 7 >> temp.txt 
39.
goto 2 
40.
:1 
41.
echo Function MyIP_XMLHTTP( ) >wan.vbs 
42.
echo     Dim objRequest, strURL >>wan.vbs 
43.
echo     MyIP_XMLHTTP = "0.0.0.0" >>wan.vbs 
44.
echo     strURL = "http://www.whatismyip.com/automation/n09230945.asp" >>wan.vbs 
45.
echo     Set objRequest = CreateObject( "Microsoft.XMLHTTP" ) >>wan.vbs 
46.
echo     objRequest.open "GET", strURL, False >>wan.vbs 
47.
echo     objRequest.send vbNull >>wan.vbs 
48.
echo     If objRequest.status = 200 Then MyIP_XMLHTTP = objRequest.responseText >>wan.vbs 
49.
echo     Set objRequest = Nothing >>wan.vbs 
50.
echo End Function >>wan.vbs 
51.
echo ret = MyIP_XMLHTTP( ) >>wan.vbs 
52.
echo Set FSys = CreateObject("Scripting.FileSystemObject") >>wan.vbs 
53.
echo Set MonFic = FSys.CreateTextFile("00001.tmp") >>wan.vbs 
54.
echo With MonFic >>wan.vbs 
55.
echo .writeLine ret >>wan.vbs 
56.
echo End With >>wan.vbs 
57.
wan.vbs 
58.
if exist 00001.tmp goto xpexist 
59.
goto xpnotexist 
60.
:xpexist 
61.
for /F "tokens=* delims=" %%a in (00001.tmp) do set wanIP=%%a 
62.
if xpexist 00001.tmp goto xpexist1 
63.
goto xpnotexist1 
64.
:xpexist1 
65.
del /F /Q 00001.tmp >NUL 
66.
:xpnotexist 
67.
echo Internet IP: %wanIP% >> temp.txt 
68.
exit 
69.
:2 
70.
echo Function MyIP_XMLHTTP( ) >wan.vbs 
71.
echo     Dim objRequest, strURL >>wan.vbs 
72.
echo     MyIP_XMLHTTP = "0.0.0.0" >>wan.vbs 
73.
echo     strURL = "http://www.whatismyip.com/automation/n09230945.asp" >>wan.vbs 
74.
echo     Set objRequest = CreateObject( "Microsoft.XMLHTTP" ) >>wan.vbs 
75.
echo     objRequest.open "GET", strURL, False >>wan.vbs 
76.
echo     objRequest.send vbNull >>wan.vbs 
77.
echo     If objRequest.status = 200 Then MyIP_XMLHTTP = objRequest.responseText >>wan.vbs 
78.
echo     Set objRequest = Nothing >>wan.vbs 
79.
echo End Function >>wan.vbs 
80.
echo ret = MyIP_XMLHTTP( ) >>wan.vbs 
81.
echo Set FSys = CreateObject("Scripting.FileSystemObject") >>wan.vbs 
82.
echo Set MonFic = FSys.CreateTextFile("00001.tmp") >>wan.vbs 
83.
echo With MonFic >>wan.vbs 
84.
echo .writeLine ret >>wan.vbs 
85.
echo End With >>wan.vbs 
86.
wan.vbs 
87.
if exist 00001.tmp goto vistaexist 
88.
goto vistanotexist 
89.
:vistaexist 
90.
for /F "tokens=* delims=" %%a in (00001.tmp) do set wanIP=%%a 
91.
if exist 00001.tmp goto vistaexist1 
92.
goto vistanotexist1 
93.
:vistaexist1 
94.
del /F /Q 00001.tmp >NUL 
95.
:vistanotexist 
96.
ipconfig |find "IPv4" >> 00002.tmp 
97.
for /f "tokens=2 delims=:" %%a in (00002.tmp) do set lanIP=%%a 
98.
del /F /Q 00002.tmp >NUL 
99.
for /F "tokens=* delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages"') do set lang=%%i 
100.
set lang=%lang:~68,5% 
101.
echo Local IP:%lanIP% >> temp.txt 
102.
echo Internet IP: %wanIP% >> temp.txt 
103.
echo Localisation: %lang% >> temp.txt 
104.
exit
Sieht jemand das Problem ?

Vielen Dank im Vorraus !
Mitglied: rubberman
30.12.2009 um 02:59 Uhr
Hallo Pinkywesen,

zumindest 3 Dinge, die mir beim Überfliegen des Codes aufgefallen sind:
1. es gibt nur "IF EXIST ....", um das Vorhandensein von Dateien zu prüfen. Sowas wie "if xpexist..." oder "if vistaexist..." kann nicht funktionieren. (Zeilen 62 u. 103)
2. das VBScript mit dem START Befehl aufzurufen würde ich sein lasssen, weil dein Batch dann nicht bis zur Abarbeitung des Scripts wartet, sondern weiterrennt. In deinem Fall: entferne das start vor wan.vbs einfach. (Zeilen 57 u. 98)
3. "goto next" geht ins Leere (wobei ich denke, dass du nicht den kompletten Batch gepostet hast)

<edit>
neben ein paar anderen kleinen Unzulänglichkeiten wie:
- die Echoumleitung bei der ersten Zeile besser mit > statt mit >>
- warum versuchst du das Betriebssystem herauszufinden, wenn du in dessen Abhängigkeit zweimal das gleiche VBScript schreibst
- die *.tmp Datei könntest du dir wahrscheinlich sparen, wenn du das ergebnis der VBS Funktion mit WScript.Echo ausgeben lässt und das Script in einer FOR Schleife mit cscript //nologo wan.vbs startest
usw.

Aber vielleicht geht das für den Anfang zu weit.
</edit>

Grüße
rubberman
Bitte warten ..
Mitglied: Pinkywesen
30.12.2009 um 03:36 Uhr
Danke rubberman,

Für deine schnelle Hilfe ! Ich habe mal was zu deinen Punkten geschrieben:

1. Ja, ist ein Fehler. Hab ich übersehen. Danke !
2. Das VBScript soll aber neben der BATCH Datei laufen
3. Ja, ich habe nicht das ganze Script gepostet. Aber nur der Teil ist hier relevant.

Das Script läuft wieder. Aber es gibt immer noch eine Fehlermeldung beim herausfinden der IP. Ich habe mal einen Screenshot gemacht:
http://www.imgbox.de/users/public/images/x29122o177.jpg

Können wenn wir das erste Problem gelöst haben die anderen "Unzulänglichkeiten" angehen ?

Nochmals Danke für die schnelle Hilfe
Bitte warten ..
Mitglied: rubberman
30.12.2009 um 04:01 Uhr
Hallo Pinkywesen,

zu 2.) Auf keinen Fall!! Das VBScript erzeugt ja erst die *.tmp Datei, die du im weiteren Verlauf benötigst! Muss also abgelaufen sein, bevor es im Batch weiter geht!

Dein Fehler kommt zustande, weil du bei mehrmaligem Aufruf immer wieder an die vorhandenen Dateien hinzufügst. Ersetze mindestens beim Schreiben des VBScripts die erste Zeile so:
01.
echo Function MyIP_XMLHTTP( ) >wan.vbs
Grüße
rubberman
Bitte warten ..
Mitglied: Pinkywesen
30.12.2009 um 04:30 Uhr
Nochmals Danke für die schnelle Antwort,

Ich habe jetzt alles so gemacht wie du gesagt hast. Jetzt läuft mein Script zwar fehlerfrei aber ich kriege in die temp.txt nicht die IP-Adresse. Was ist nun falsch ?

Zitat:
- die *.tmp Datei könntest du dir wahrscheinlich sparen, wenn du das ergebnis der VBS Funktion mit WScript.Echo ausgeben lässt und das Script in einer FOR Schleife mit cscript //nologo wan.vbs startest
usw.

Das habe ich leider nicht verstanden. Kannst du es bitte vormachen ? Also ich muss die IP später in der temp.txt haben. Nicht als Ausgabe oder so.

Danke
Bitte warten ..
Mitglied: rubberman
30.12.2009 um 13:08 Uhr
Hallo Pinkywesen,

falls du die Windowsversion nicht noch für irgendetwas anderes benötigst, kannst du dir die Geschichte eigentlich sparen.

Hier mal die Kurzfassung von dem, was ich meinte:
01.
@echo off &setlocal 
02.
 
03.
>"%temp%\GetIPAdr.vbs" echo Function MyIP() 
04.
>>"%temp%\GetIPAdr.vbs" echo Dim objRequest : Set objRequest = CreateObject("Microsoft.XMLHTTP") 
05.
>>"%temp%\GetIPAdr.vbs" echo objRequest.open "GET", "http://www.whatismyip.com/automation/n09230945.asp", False 
06.
>>"%temp%\GetIPAdr.vbs" echo objRequest.send vbNull 
07.
>>"%temp%\GetIPAdr.vbs" echo If objRequest.status = 200 Then MyIP = objRequest.responseText 
08.
>>"%temp%\GetIPAdr.vbs" echo Set objRequest = Nothing 
09.
>>"%temp%\GetIPAdr.vbs" echo End Function 
10.
>>"%temp%\GetIPAdr.vbs" echo On Error Resume Next 
11.
>>"%temp%\GetIPAdr.vbs" echo WScript.Echo MyIP() 
12.
 
13.
for /f "delims=" %%i in ('cscript //nologo "%temp%\GetIPAdr.vbs"') do set "IPAdr=%%i" 
14.
del "%temp%\GetIPAdr.vbs" 
15.
 
16.
if not defined IPAdr ( 
17.
  echo Die IP Adresse konnte nicht ermittelt werden. 
18.
  echo Pruefe bitte die Verbindung zum Internet. 
19.
  pause 
20.
  goto :eof 
21.
) else ( 
22.
  >temp.txt echo Internet IP: %IPAdr% 
23.
24.
 
25.
pause
Das VBScript habe ich noch etwas verändert. Ua. erfolgt die Ausgabe jetzt über "WScript.Echo".
In Zeile 13 erfolgt der Aufruf des Scripts und die Zuweisung der Variablen.
Das > inZeile " >temp.txt echo Internet IP: %IPAdr%" musst du noch zu >> ändern, wenn du vorher die Windowsversion in die temp.txt schreibst.

Grüße
rubberman
Bitte warten ..
Mitglied: Pinkywesen
30.12.2009 um 13:57 Uhr
Und schon wieder muss ich dir danken,

Nicht böse gemeint. Jetzt ist das Script kurz und läuft fehlerfrei ! Danke nochmal. Aber die Betriebssystemerkennung hätte ich schon gerne drin. Und was ist mit der Localisation und der Local IP ?

Hier nochmal das Script mit temp.txt Speicherung:

01.
@echo off &setlocal 
02.
 
03.
>"%temp%\GetIPAdr.vbs" echo Function MyIP() 
04.
>>"%temp%\GetIPAdr.vbs" echo Dim objRequest : Set objRequest = CreateObject("Microsoft.XMLHTTP") 
05.
>>"%temp%\GetIPAdr.vbs" echo objRequest.open "GET", "http://www.whatismyip.com/automation/n09230945.asp", False 
06.
>>"%temp%\GetIPAdr.vbs" echo objRequest.send vbNull 
07.
>>"%temp%\GetIPAdr.vbs" echo If objRequest.status = 200 Then MyIP = objRequest.responseText 
08.
>>"%temp%\GetIPAdr.vbs" echo Set objRequest = Nothing 
09.
>>"%temp%\GetIPAdr.vbs" echo End Function 
10.
>>"%temp%\GetIPAdr.vbs" echo On Error Resume Next 
11.
>>"%temp%\GetIPAdr.vbs" echo WScript.Echo MyIP() 
12.
 
13.
for /f "delims=" %%i in ('cscript //nologo "%temp%\GetIPAdr.vbs"') do set "IPAdr=%%i" 
14.
del "%temp%\GetIPAdr.vbs" 
15.
 
16.
if not defined IPAdr ( 
17.
  >>temp.txt echo Internet IP: Failure ! 
18.
  goto :eof 
19.
) else ( 
20.
  >>temp.txt echo Internet IP: %IPAdr% 
21.
)
Bitte warten ..
Mitglied: rubberman
30.12.2009 um 17:36 Uhr
Hallo Pinkywesen

mal sehen, was geht.

01.
@echo off &setlocal 
02.
 
03.
::::::::::::::: OS 
04.
>"%temp%\GetOsInfo.vbs" echo Set colOperatingSystems = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_OperatingSystem") 
05.
>>"%temp%\GetOsInfo.vbs" echo For Each objOperatingSystem in colOperatingSystems 
06.
>>"%temp%\GetOsInfo.vbs" echo Wscript.Echo objOperatingSystem.Caption 
07.
>>"%temp%\GetOsInfo.vbs" echo Next 
08.
for /f "delims=" %%a in ('cscript //nologo "%temp%\GetOsInfo.vbs"') do set "OS=%%a" 
09.
del "%temp%\GetOsInfo.vbs" 
10.
 
11.
>temp.txt echo OS: %OS% 
12.
 
13.
::::::::::::::: Local IP 
14.
for /f "delims=: tokens=2" %%i in ('ipconfig^|findstr /i /c:"ip-adr"') do set "loclIPAdr=%%i" 
15.
 
16.
if not defined loclIPAdr( 
17.
  >>temp.txt echo Local IP: Failure ! 
18.
) else ( 
19.
  >>temp.txt echo Local IP: %loclIPAdr:~1% 
20.
21.
 
22.
::::::::::::::: Net IP 
23.
>"%temp%\GetIPAdr.vbs" echo Function MyIP() 
24.
>>"%temp%\GetIPAdr.vbs" echo Dim objRequest : Set objRequest = CreateObject("Microsoft.XMLHTTP") 
25.
>>"%temp%\GetIPAdr.vbs" echo objRequest.open "GET", "http://www.whatismyip.com/automation/n09230945.asp", False 
26.
>>"%temp%\GetIPAdr.vbs" echo objRequest.send vbNull 
27.
>>"%temp%\GetIPAdr.vbs" echo If objRequest.status = 200 Then MyIP = objRequest.responseText 
28.
>>"%temp%\GetIPAdr.vbs" echo Set objRequest = Nothing 
29.
>>"%temp%\GetIPAdr.vbs" echo End Function 
30.
>>"%temp%\GetIPAdr.vbs" echo On Error Resume Next 
31.
>>"%temp%\GetIPAdr.vbs" echo WScript.Echo MyIP() 
32.
 
33.
for /f "delims=" %%i in ('cscript //nologo "%temp%\GetIPAdr.vbs"') do set "IPAdr=%%i" 
34.
del "%temp%\GetIPAdr.vbs" 
35.
 
36.
if not defined IPAdr ( 
37.
  >>temp.txt echo Internet IP: Failure ! 
38.
) else ( 
39.
  >>temp.txt echo Internet IP: %IPAdr% 
40.
41.
 
42.
::::::::::::::: Country 
43.
for /f "tokens=3 delims=	" %%i in ('reg query "HKCU\Control Panel\International" /v "sCountry"') do set "country=%%i" 
44.
>>temp.txt echo Localisation: %country% 
45.
 
46.
pause
Denke, das sollte so ziemlich alles abdecken, was du wolltest.

Grüße
rubberman

<edit>
Da IPCONFIG die IP-Adresse auch nur dann ausspuckt, wenn der Rechner im Net registriert ist, entsprechende Abfrage hinzu.
</edit>
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
Batch Script Editor - Programmvorstellung des Entwicklers (16)

Tipp von wowItsDoge zum Thema Batch & Shell ...

Windows Server
Batch Script bei Start ausführen (3)

Frage von KEFHVDI zum Thema Windows Server ...

Batch & Shell
Batch-Script für Lizenzen (3)

Frage von stoepsu77 zum Thema Batch & Shell ...

Batch & Shell
Batch-Script für die Messung der Netzwerkgeschwindigkeit (10)

Anleitung von Kraemer zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (12)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...