2016-08-25 77 views
0

我写过这个批处理文件。
原因是我的同事在开始批量安装之前忘记连接WLAN。它发生的事情是文件被窃听和释放。如果我重新启动它可以再次。批量检查互联网连接或连接到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 
+0

这会工作在VBScript好了很多。如果感兴趣,我会让你一个。 –

+0

如果你愿意,我会很高兴。但有没有办法让它在vbs中“动画”?这不是必须的。 –

+0

VBScript不支持我知道的动画。 –

回答

0

在这里你去。这取代了这两个批处理文件。在添加.xml并在发送消息之前对服务器执行第一次ping之后,该脚本将再次尝试4次。您可以暂时“忽略”第20行以进行调试,以确保您的路径对于.xml导入是正确的。您可以在脚本的顶部放置一个伪造的服务器名称,以查看错误发生的原因。如果您需要更多帮助,请告知我。我为你创造了这个想法,希望你能看到脚本是多么酷,想要试一试。我相信人们会说你应该学习Powershell。我很想看到有人在Powershell中复制这个。这个网站使用了ping代码片段。 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