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

IP-Auslesen Batch Einzeiler in VBS

Frage Entwicklung VB for Applications

Mitglied: ZeXoRs

ZeXoRs (Level 1) - Jetzt verbinden

09.07.2012 um 08:35 Uhr, 6299 Aufrufe, 8 Kommentare

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
Mitglied: 76109
09.07.2012 um 13:38 Uhr
Hallo

In etwa so:
01.
    Dim sComputer, sStdOut, sIP 
02.
     
03.
    With CreateObject("WScript.Shell") 
04.
        sComputer = .Environment("Process").Item("Computername") 
05.
        sStdOut = .Exec("Ping -n 1 -4 " & sComputer).StdOut.ReadAll 
06.
    End With 
07.
     
08.
    If InStr(sStdOut, "[") > 0 Then 
09.
        sIP = Split(Split(sStdOut, "[", 2)(1), "]")(0) 
10.
    Else 
11.
        sIP = "Nothing" 
12.
    End If 
13.
     
14.
    MsgBox sIP
Gruß Dieter
Bitte warten ..
Mitglied: ZeXoRs
09.07.2012, aktualisiert um 14:04 Uhr
Hi, danke das klappt ja schon mal wunderbar

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?

Also irgendwo muss das noch rein ;)

01.
strFilename = "C:\DATEV\PROGRAMM\DATEVDMS\program.ini" 
02.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
03.
Set objFile = objFSO.GetFile(strFilename) 
04.
intFileSize = objFile.Size 
05.
Set objFile = objFile.OpenAsTextStream() 
06.
strFileContent = objFile.Read(intFileSize) 
07.
objFile.Close 
08.
 
09.
  
10.
Set WShell = CreateObject ("WScript.Shell")   
11.
Set ProcEnv = WShell.Environment("Process")  
12.
computername = procEnv("computername") 
13.
Set objRegExp = New RegExp 
14.
objRegExp.Pattern = Chr(34) 
15.
objRegExp.Global = True 
16.
objRegExp.IgnoreCase = True 'False für case-sensitive 
17.
strFileContent = objRegExp.Replace(strFileContent, "") 
18.
objRegExp.Pattern = "p000000e0" 
19.
strFileContent = objRegExp.Replace(strFileContent, computername) 
20.
Set objFile = objFSO.OpenTextFile(strFilename, 2) 
21.
objFile.Write strFileContent 
22.
objFile.Close
Bitte warten ..
Mitglied: 76109
09.07.2012 um 14:38 Uhr
Hallo ZeXoRs!

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

Gruß Dieter
Bitte warten ..
Mitglied: ZeXoRs
09.07.2012 um 15:25 Uhr
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
Bitte warten ..
Mitglied: 76109
09.07.2012, aktualisiert um 16:27 Uhr
Hallo Zexi!

Das Ganze, dann so:
01.
Const strFilename = "C:\DATEV\PROGRAMM\DATEVDMS\program.ini" 
02.
 
03.
    Dim objFso, strText, strComputer, strStdOut, strIP 
04.
     
05.
    With CreateObject("WScript.Shell") 
06.
        strComputer = .Environment("Process").Item("Computername") 
07.
        strStdOut = .Exec("Ping -n 1 -4 " & strComputer).StdOut.ReadAll 
08.
    End With 
09.
     
10.
    strIP = "" 
11.
     
12.
    If InStr(strStdOut, "[") > 0 Then 
13.
        strIP = Split(Split(strStdOut, "[", 2)(1), "]")(0) 
14.
    End If 
15.
     
16.
    Set objFso = CreateObject("Scripting.FileSystemObject") 
17.
         
18.
    With objFso.OpenTextFile(strFilename) 
19.
        strText = Replace(.ReadAll, Chr(34), "") 
20.
       .Close 
21.
    End With 
22.
    
23.
    strText = Replace(strText, "p000000e0", strComputer, 1, -1, vbTextCompare) 
24.
    strText = Replace(strText, "xxx.xxx.xxx.xx", strIP) 
25.
     
26.
    With objFso.CreateTextFile(strFilename) 
27.
        .Write strText 
28.
        .Close 
29.
    End With
Gruß Dieter
Bitte warten ..
Mitglied: ZeXoRs
09.07.2012 um 17:25 Uhr
Hat geklappt sehr gut dankeschön

Muss man hier mal ein Lob aussprechen!!!

Schönen Abend!
Zexi
Bitte warten ..
Mitglied: rubberman
09.07.2012, aktualisiert um 19:34 Uhr
Hallo Zusammen.

Ist zwar gelöst, aber warum in einem VBScript die Kommandozeile bemühen?
Nur mal so ...
01.
Set colNetAdp = GetObject("winmgmts:!\\.\root\cimv2").ExecQuery( _ 
02.
  "Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=True") 
03.
For Each oNetAdp In colNetAdp 
04.
  WScript.Echo oNetAdp.IPAddress(0) 
05.
Next
Grüße
rubberman
Bitte warten ..
Mitglied: 76109
09.07.2012 um 19:46 Uhr
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 entfallen

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
LAN, WAN, Wireless
Gerät über IP auslesen? (7)

Frage von baxxter333 zum Thema LAN, WAN, Wireless ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...