如果连接到办公室 VPN,则尝试启动应用程序

如果连接到办公室 VPN,则尝试启动应用程序

我无法让 StrComp 正常工作,我也不知道为什么。有人能看出我可能做错了什么吗?(​​所有 IP 号码都已更改)

Option Explicit
Dim http : Set http = CreateObject( "MSXML2.ServerXmlHttp" )
Dim externalip

http.Open "GET", "http://icanhazip.com", False
http.Send
externalip = http.responseText

wscript.Echo externalip
wscript.Echo StrComp(externalip, "71.215.176.202")

if StrComp(externalip, "71.215.176.202") = 0 Then
  wscript.Echo "Connected to Comcast"
else
  wscript.echo "Connected to Office"
end if

Set http = Nothing

即使 externalip 正确,这也永远不会返回 0。奇怪的是 externalip 中似乎有一个额外的 CR/LF。我尝试使用 Trim 函数,但似乎没有帮助。以下是连接到办公室时的输出示例:

C:\BATFiles>cscript ip.vbs
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

107.62.166.159

-1
Connected to Office

以下是连接到我的本地 ISP(Comcast)时的输出

C:\BATFiles>cscript ip.vbs
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

71.215.176.202

1
Connected to Office

我从输出中知道我可以检查 strcomp 是否返回 > 0,但办公室 IP 可能会根据我连接的位置而变化,而我本地的 IP 几乎是静态的。而且我不太清楚在进行字符串比较时如何确定 -1 和 1。是在进行长度比较吗?

答案1

http://icanhazip.com返回带有换行符的 IP(请注意,在您的示例中,IP 地址和 -1 或 1 之间有一条线)。

改用这个:

externalip = replace(http.responseText, chr(10), "")

这将用空值替换换行符,并且应该可以正确进行比较。

回答你的问题,-1 0 和 1 取决于字符串的排序方式。例如,0 在 1 之前,所以你会得到 -1。T 在 A 之后,所以你会得到 1。T = T,所以你会得到 0

相关内容