0

我有这个脚本

a=inputbox("Wat is het IP adres van de VPS?")
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd.exe /C netsh interface ipv4 set address name=Wi-Fi source=static address="& a &" mask=255.255.254.0 gateway=185.18.148.1 & pause"
msgbox "IP adres: " +a

用户在输入框中输入他的 VPS IP 地址。网关为 VPS IP.1(例如,当 VPS IP 为 8.8.8.8 时为 8.8.8.1)

我想读取 IP 变量 (a) 并从第三个点删除所有字符

示例 1:176.23.45.102 中的用户类型 在​​这种情况下,应删除 102,并将变量更改为 176.23.45。

示例 2:17.23.45.4 中的用户类型在这种情况下,应删除 4,并将变量更改为 17.23.45。

如果在 VBScript 中不可能,(Windows)命令行/批处理也很好。

4

2 回答 2

1

使用 Split(),zap 第 4 个元素,Join():

>> For Each s In Array("176.23.45.102", "7.23.45.4", "1.2.3.4")
>>     a = Split(s, ".")
>>     a(3) = ""
>>     WScript.Echo s, "=>", Join(a, ".")
>> Next
>>
176.23.45.102 => 176.23.45.
7.23.45.4 => 7.23.45.
1.2.3.4 => 1.2.3.

受@Ansgar 启发 - 使用 RegExp 删除有问题的尾随数字:

>> Set r = New RegExp
>> r.Pattern = "\d+$"
>> WScript.Echo """" & r.Replace("1.2.3.4", "") & """"
>>
"1.2.3."
于 2013-08-19T18:36:29.130 回答
1

另一种选择是正则表达式:

Set re = New RegExp
re.Pattern = "(.*\.)\d+$"

addr = "176.23.45.102"
WScript.Echo re.Replace(addr, "$1")
于 2013-08-19T18:45:20.980 回答