【问题标题】:Batch checking for internet connection or connect to WLAN批量检查互联网连接或连接到 WLAN
【发布时间】:2016-08-25 10:27:33
【问题描述】:

我已经编写了这个批处理文件。
原因是我的同事在开始批量安装之前忘记连接 WLAN。碰巧该文件被窃听并释放。如果我重新启动它就可以了。

也许有更好的写法?

wlancheck.bat

@ECHO OFF
TITLE Sjekker maskin for nettverk. 
REM Maskin pinger www.vg.no
:wlancheck
ECHO ****************************************
ECHO *****SJEKKER OM MASKIN ER P† NETT!*******
ECHO ****************************************
ping www.vg.no>nul
if errorlevel 1 goto nonet
if errorlevel 0 goto gotnet

:nonet 
CLS
color cf
ECHO ****************************************
ECHO ******        IKKE P† NETT!!!    *******
ECHO ******     SCRIPT G†R I LOOP     *******
ECHO ******    TIL MASKIN ER P†NETT  *******
ECHO ****************************************
timeout /t 10
REM Setter wlanprofil
CLS
ECHO ****************************************
ECHO *****   Setter WLAN INSTILLINGER   *****
ECHO ****************************************
START /wait /min %~d0\bat\setup\addwlanprofile.bat
timeout 10 >nul
CLS
Goto wlancheck
:gotnet
CLS
color a0
ECHO ****************************************
ECHO *****     MASKIN ER P† NETT!     *******
ECHO ****************************************
timeout 4 >nul
CLS
Exit

addwlanprofile.bat

@ECHO OFF
netsh wlan add profile filename=%~d0\reg\wlan.xml
exit

【问题讨论】:

  • 这在 vbscript 中会更好。如果有兴趣,我会给你做一个。
  • 如果你这样做我会很高兴。但是有没有办法让它在 vbs 中“动画化”?没必要这样做。
  • VBScript 不支持我知道的动画。
  • 我们必须小心不要开创 SO 是免费代码编写服务的先例。我只有时间这样做,因为我在手术后躺在沙发上。我不会再为任何其他成员从头开始创建脚本。希望我不会因此而被打败。

标签: batch-file command-line


【解决方案1】:

给你。这将替换两个批处理文件。在添加 .xml 并在抛出消息之前对服务器执行第一次 ping 后,该脚本将进行 4 次额外尝试。您可以暂时“取消标记”第 20 行以进行调试,以确保您的路径对于 .xml 导入是正确的。您可以在脚本顶部放置一个虚假的服务器名称,以查看发生错误时会发生什么。如果您需要更多帮助,请告诉我。我为你创建了这个,希望你会看到脚本是多么酷,并想尝试一下。我相信人们会说你应该学习 Powershell。我很想看到有人在 Powershell 中复制它。该站点使用了 ping 代码 sn-ps。 http://www.robvanderwoude.com/vbstech_network_ping.php 需要使用 %windir%\System32\wscript.exe WlanCheck.vbs 调用脚本

strSite = "www.vg.no"

Set WshShell = WScript.CreateObject("WScript.Shell")
strWinDir = WshShell.ExpandEnvironmentStrings("%windir%")
strWorkingDir = Replace(WScript.ScriptFullName, WScript.ScriptName, "")

If Ping(strSite) = "True" Then
  MsgBox "CONNECTED", 64, "NETWORK STATUS"
  WScript.Quit
End If
Do While Ping(strSite) = "False"
  ReturnValue = MsgBox("NOT CONNECTED" & vbCrLf & "CONNECT NOW?", 20, "NETWORK STATUS")
    If ReturnValue = 6 Then
      Count = Count + 1
        If Count > 5 Then
          MsgBox "UNABLE TO CONNECT TO NETWORK" & vbCrLf & "CONTACT SYSTEM ADMINISTRATOR", 0, "NETWORK STATUS"
          WScript.Quit
        Else
          If Not Count > 1 Then
            'WScript.Echo strWinDir & "\System32\cmd.exe /C " & strWinDir & "\System32\netsh.exe wlan add profile filename=" & strWorkingDir & "reg\wlan.xml"
            WshShell.Run(strWinDir & "\System32\cmd.exe /C " & strWinDir & "\System32\netsh.exe wlan add profile filename=" & strWorkingDir & "reg\wlan.xml"),0, True
            WScript.Sleep(10000)
          End If
        End If
    Else
      WScript.Quit
    End if
Loop

Function Ping(myHostName)
Dim colPingResults, objPingResult, strQuery
strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & myHostName & "'"
Set colPingResults = GetObject("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\.\root\cimv2").ExecQuery(strQuery)
For Each objPingResult In colPingResults
  If Not IsObject(objPingResult) Then
    Ping = False
  ElseIf objPingResult.StatusCode = 0 Then
    Ping = True
  Else
    Ping = False
  End If
Next
Set colPingResults = Nothing
End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 2011-04-15
    • 2017-03-16
    • 2014-02-08
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多