You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助编写仅在172.16.10.0子网内执行的脚本

我来给你两个实用的Windows脚本方案,都能精准完成你要的需求——只在172.16.10.0/24子网内执行指定的路由删除命令:

批处理脚本方案

这个脚本会先抓取本地工作站的IP地址,检查是否属于目标子网,符合条件就自动执行路由删除操作:

@echo off
setlocal enabledelayedexpansion

:: 遍历所有本地IPv4地址,筛选目标子网
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i "ipv4 address"') do (
    set "ip=%%a"
    set "ip=!ip: =!"  :: 移除IP地址里的多余空格
    :: 检查IP是否以172.16.10.开头(匹配172.16.10.0/24子网)
    echo !ip! | findstr /b "172.16.10." >nul
    if !errorlevel! equ 0 (
        echo 检测到当前子网为172.16.10.0/24,执行路由删除命令...
        :: 执行路由删除,注意必须用管理员权限运行
        route delete 192.168.1.0 mask 255.255.255.0 172.16.10.1
        goto :end
    )
)

echo 当前不在172.16.10.0/24子网内,无需执行操作。
:end
endlocal
pause

关键细节提醒:

  • 脚本需要以管理员身份运行,否则修改路由表会提示权限不足
  • 找到匹配子网后会立即执行命令并退出循环,避免重复操作
PowerShell脚本方案

PowerShell的网络命令更灵活,能更精准地过滤有效IP地址:

# 定义目标子网
$targetSubnet = "172.16.10.0/24"
# 获取本地有效IPv4地址(过滤掉临时/自动配置的APIPA地址)
$localIPs = Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.PrefixOrigin -in "Dhcp", "Manual" }

foreach ($ip in $localIPs) {
    if ($ip.IPAddress -like "172.16.10.*") {
        Write-Host "检测到当前子网为$targetSubnet,执行路由删除命令..."
        # 执行路由删除命令
        route delete 192.168.1.0 mask 255.255.255.0 172.16.10.1
        exit
    }
}

Write-Host "当前不在$targetSubnet子网内,无需执行操作。"

关键细节提醒:

  • 右键PowerShell选择「以管理员身份运行」才能正常执行路由修改
  • 如果有多网卡,可在Get-NetIPAddress后添加-InterfaceAlias "你的网卡名称"来指定特定网卡检测

额外建议

如果需要脚本开机自动执行,推荐用Windows任务计划(比直接放启动文件夹更灵活):

  1. 创建新任务,设置触发条件为「登录时」
  2. 操作选择「启动程序」,指向你的脚本文件
  3. 在「常规」标签勾选「使用最高权限运行」

内容的提问来源于stack exchange,提问作者user9527129

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:32:42