尝试 ping google,如果没有响应 disable/enable 接口
Trying to ping google and if no respons disable/enable interface
当我启动我的计算机时,我并不总是立即连接到互联网。我尝试了很多东西,但从未找到解决我问题的明确方法。所以我现在要做的是 ping 一台主机。如果我无法访问它,那么我会禁用并启用我的网卡。
我有一个禁用和启用界面的小批处理文件。
但我想创建一个在启动时启动的批处理文件,测试我的 ping,如果没有响应,那么将 disable/enable 我的网络接口。
此代码正确吗?
@echo on
set "host=google.com"
ping -n 1 "%host%" | findstr /r /c:"[0-9] *ms"
if %errorlevel% == 0 (
echo Success.
) else (
set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )
@echo on
netsh interface set interface "Ethernet 2" DISABLED
timeout /t 10
netsh interface set interface "Ethernet 2" ENABLED
)
我试过一次,但在我的命令提示符下似乎没有看到 ping 动作或任何东西。
@echo off
setlocal
set "host=google.com"
set "requests=4"
set "replies=0"
for /f "delims=" %%A in ('ping -n %requests% %host%') do (
echo %%A
echo(%%~A | find "Reply" >nul 2>nul && set /a "replies+=1"
)
if %requests% equ %replies% (
echo Success.
) else (
cd /d "%~dp0" && (
if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs"
net session 1>nul 2>nul || (
(
echo Set UAC = CreateObject("Shell.Application"^)
echo UAC.ShellExecute "cmd.exe", "/k cd ""%~dp0"" && ""%~f0"" %*", "", "runas", 1
) > "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /b 0
)
)
netsh interface set interface "Ethernet 2" DISABLED
timeout /t 10
netsh interface set interface "Ethernet 2" ENABLED
)
也许你没有看到 ping 工作,因为 -n 1
可以很快
到 ping
如果连接正常。 findstr
模式
似乎合理并检测到即 9ms
.
我将 ping
更改为 -n %requests%
这样就成功了
基于设置的请求数量等于
回复 find
这个词 Reply
。如果不要求相等
回复,则视为失败。如果您不想查看
ping
的输出,然后删除行 echo %%A
.
使用引号和修饰符调整了 VBScript 代码
改变了一点。我把代码解压到 multi-line 到
使其更易于查看。
已将 fsutil dirty query %systemdrive%
更改为 net session
用于管理员用户检测。
不确定为什么需要设置当前目录
我决定把它们留在里面。也许你在写
getadmin.vbs
到当前目录,因此是一个
需要。
当我启动我的计算机时,我并不总是立即连接到互联网。我尝试了很多东西,但从未找到解决我问题的明确方法。所以我现在要做的是 ping 一台主机。如果我无法访问它,那么我会禁用并启用我的网卡。
我有一个禁用和启用界面的小批处理文件。 但我想创建一个在启动时启动的批处理文件,测试我的 ping,如果没有响应,那么将 disable/enable 我的网络接口。
此代码正确吗?
@echo on
set "host=google.com"
ping -n 1 "%host%" | findstr /r /c:"[0-9] *ms"
if %errorlevel% == 0 (
echo Success.
) else (
set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )
@echo on
netsh interface set interface "Ethernet 2" DISABLED
timeout /t 10
netsh interface set interface "Ethernet 2" ENABLED
)
我试过一次,但在我的命令提示符下似乎没有看到 ping 动作或任何东西。
@echo off
setlocal
set "host=google.com"
set "requests=4"
set "replies=0"
for /f "delims=" %%A in ('ping -n %requests% %host%') do (
echo %%A
echo(%%~A | find "Reply" >nul 2>nul && set /a "replies+=1"
)
if %requests% equ %replies% (
echo Success.
) else (
cd /d "%~dp0" && (
if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs"
net session 1>nul 2>nul || (
(
echo Set UAC = CreateObject("Shell.Application"^)
echo UAC.ShellExecute "cmd.exe", "/k cd ""%~dp0"" && ""%~f0"" %*", "", "runas", 1
) > "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /b 0
)
)
netsh interface set interface "Ethernet 2" DISABLED
timeout /t 10
netsh interface set interface "Ethernet 2" ENABLED
)
也许你没有看到 ping 工作,因为 -n 1
可以很快
到 ping
如果连接正常。 findstr
模式
似乎合理并检测到即 9ms
.
我将 ping
更改为 -n %requests%
这样就成功了
基于设置的请求数量等于
回复 find
这个词 Reply
。如果不要求相等
回复,则视为失败。如果您不想查看
ping
的输出,然后删除行 echo %%A
.
使用引号和修饰符调整了 VBScript 代码 改变了一点。我把代码解压到 multi-line 到 使其更易于查看。
已将 fsutil dirty query %systemdrive%
更改为 net session
用于管理员用户检测。
不确定为什么需要设置当前目录
我决定把它们留在里面。也许你在写
getadmin.vbs
到当前目录,因此是一个
需要。