Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 6925 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 ..
Ähnliche Inhalte
XML
gelöst Vbs - simple XML Datei auslesen (4)

Frage von DeeJayBee zum Thema XML ...

Batch & Shell
gelöst Base64 Decode (Batch,VBS) (26)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (4)

Frage von joni2000de zum Thema Batch & Shell ...

Entwicklung
gelöst Powershell IP und Hostname auslesen (3)

Frage von LyonAD zum Thema Entwicklung ...

Neue Wissensbeiträge
Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (31)

Frage von McLion zum Thema Router & Routing ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail (24)

Frage von ahstax zum Thema Visual Studio ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Windows Netzwerk
Netzwerk Neustrukturierung (15)

Frage von IT-Dreamer zum Thema Windows Netzwerk ...