批处理脚本

批处理脚本

拆分问题:这个另一个这是适用于 Linux 的。

我认为在 Windows 命令行中停用互联网(不是 LAN)的最简单方法是删除默认网关,因此,假设 LAN 是 10.0.2.0/24 且网关是 10.0.2.1:

`route delete 0.0.0.0 mask 0.0.0.0 10.0.2.1`  

要重新激活互联网:

`route add 0.0.0.0 mask 0.0.0.0 10.0.2.1`

但是,即使这一行简单,它也需要先发现默认网关 IP:

  • 在 Windows 中:

    route print

我打算编写一些通用的 shell 脚本,用于启用/禁用互联网(但保持 LAN 正常运行),因此似乎我需要一些grep等效操作来过滤和检测确切的网关 IP 号(可能是 10.0.2.1、127.0.0.1、127.0.50.1、192.168.0.1 ... 等),除非我找到更简单的命令行。
有什么想法吗?

  • 编辑:有些人报告说,Windows 中的网关删除也可以像这样完成:

route delete 0.0.0.0

所以,显然修改@and31415 编写的删除脚本是没有问题的。

答案1

批处理脚本

如同 @John1024 的方法,您可以在 Windows 中执行以下操作:

禁用

@echo off
cd /d "%~dp0"

REM retrieve the current gateway
set dest=0.0.0.0
for /f "tokens=2,3" %%A in ('"route print %dest% | findstr /c:"%dest%" "') do (

REM save the IP and delete the gateway
echo %%A %%B>%dest%.txt
route delete %dest% >nul
)
exit /b

使能够

@echo off
cd /d "%~dp0"

REM ensure the settings file exists
set dest=0.0.0.0
if not exist %dest%.txt exit /b 2

REM restore the default gateway
for /f "tokens=1,2" %%A in (%dest%.txt) do (route add %dest% mask %%A %%B >nul)
exit /b

相关内容