zexors
Goto Top

IP-Auslesen Batch Einzeiler in VBS

Hi nichts großes bin ein totaler Newbie in VB-Script...

Könnte mir jemand diesen Einzeiler in VBS schreiben?
for /f "skip=1 tokens=2 delims=" %%* in ('ping.exe -n 1 -4 %computername%') Do (set "IP=%%*")

Danke schon mal im Vorraus
Schönes Wochenende
ZeXoRs

Content-Key: 187592

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

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

Mitglied: 76109
76109 Jul 09, 2012 at 11:38:40 (UTC)
Goto Top
Hallo

In etwa so:
    Dim sComputer, sStdOut, sIP
    
    With CreateObject("WScript.Shell")  
        sComputer = .Environment("Process").Item("Computername")  
        sStdOut = .Exec("Ping -n 1 -4 " & sComputer).StdOut.ReadAll  
    End With
    
    If InStr(sStdOut, "[") > 0 Then  
        sIP = Split(Split(sStdOut, "[", 2)(1), "]")(0)  
    Else
        sIP = "Nothing"  
    End If
    
    MsgBox sIP

Gruß Dieter
Member: ZeXoRs
ZeXoRs Jul 09, 2012 updated at 12:04:41 (UTC)
Goto Top
Hi, danke das klappt ja schon mal wunderbar face-smile

Ich schreib gerade an einem Script das den Computernamen und die IP-Adresse auslesen soll und das in einem Dokument "Suchen und Ersetzen" soll. Das mit dem Computernamen haut schon hin, wie binde ich jetzt deine Lösung hier sorgfältig ein? face-smile

Also irgendwo muss das noch rein ;)

strFilename = "C:\DATEV\PROGRAMM\DATEVDMS\program.ini"  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objFile = objFSO.GetFile(strFilename)
intFileSize = objFile.Size
Set objFile = objFile.OpenAsTextStream()
strFileContent = objFile.Read(intFileSize)
objFile.Close

 
Set WShell = CreateObject ("WScript.Shell")    
Set ProcEnv = WShell.Environment("Process")   
computername = procEnv("computername")  
Set objRegExp = New RegExp
objRegExp.Pattern = Chr(34)
objRegExp.Global = True
objRegExp.IgnoreCase = True 'False für case-sensitive  
strFileContent = objRegExp.Replace(strFileContent, "")  
objRegExp.Pattern = "p000000e0"  
strFileContent = objRegExp.Replace(strFileContent, computername)
Set objFile = objFSO.OpenTextFile(strFilename, 2)
objFile.Write strFileContent
objFile.Close
Mitglied: 76109
76109 Jul 09, 2012 at 12:38:41 (UTC)
Goto Top
Hallo ZeXoRs!

Die Frage ist, wie das Format des Ersetzen-Textes aussehen soll, also "p000000e0" ersetzen durch was? "Computername...? IP...?"

Gruß Dieter
Member: ZeXoRs
ZeXoRs Jul 09, 2012 at 13:25:43 (UTC)
Goto Top
Zitat von @76109:
Hallo ZeXoRs!

Die Frage ist, wie das Format des Ersetzen-Textes aussehen soll, also "p000000e0" ersetzen durch was?
"Computername...? IP...?"

Gruß Dieter

Nein das geht ja schon also in dieser "Programm.ini" werden alle Computernamen mit "p000000e0" schon ersetzt durch die aktuelle. Das geht!

Ich möchte jetzt die druch dein Script ausgelesene IP durch die in der selben Datei durch "192.168.1.39" ersetzen.

Gruß Zexi
Mitglied: 76109
76109 Jul 09, 2012 updated at 14:27:29 (UTC)
Goto Top
Hallo Zexi!

Das Ganze, dann so:
Const strFilename = "C:\DATEV\PROGRAMM\DATEVDMS\program.ini"  

    Dim objFso, strText, strComputer, strStdOut, strIP
    
    With CreateObject("WScript.Shell")  
        strComputer = .Environment("Process").Item("Computername")  
        strStdOut = .Exec("Ping -n 1 -4 " & strComputer).StdOut.ReadAll  
    End With
    
    strIP = ""  
    
    If InStr(strStdOut, "[") > 0 Then  
        strIP = Split(Split(strStdOut, "[", 2)(1), "]")(0)  
    End If
    
    Set objFso = CreateObject("Scripting.FileSystemObject")  
        
    With objFso.OpenTextFile(strFilename)
        strText = Replace(.ReadAll, Chr(34), "")  
       .Close
    End With
   
    strText = Replace(strText, "p000000e0", strComputer, 1, -1, vbTextCompare)  
    strText = Replace(strText, "xxx.xxx.xxx.xx", strIP)  
    
    With objFso.CreateTextFile(strFilename)
        .Write strText
        .Close
    End With

Gruß Dieter
Member: ZeXoRs
ZeXoRs Jul 09, 2012 at 15:25:13 (UTC)
Goto Top
Hat geklappt sehr gut dankeschön face-smile

Muss man hier mal ein Lob aussprechen!!! face-smile

Schönen Abend!
Zexi
Member: rubberman
rubberman Jul 09, 2012 updated at 17:34:14 (UTC)
Goto Top
Hallo Zusammen.

Ist zwar gelöst, aber warum in einem VBScript die Kommandozeile bemühen?
Nur mal so ...
Set colNetAdp = GetObject("winmgmts:!\\.\root\cimv2").ExecQuery( _  
  "Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=True")  
For Each oNetAdp In colNetAdp
  WScript.Echo oNetAdp.IPAddress(0)
Next

Grüße
rubberman
Mitglied: 76109
76109 Jul 09, 2012 at 17:46:22 (UTC)
Goto Top
Hallo rubberman!

Ist zwar gelöst, aber warum in einem VBScript die Kommandozeile bemühen?
Hätte es ja auch gerne ohne die Cmd gelöst, aber Dein Lösungsweg war mir nicht bekannt bzw. ist mir entfallenface-wink

Gruß Dieter