一、创建定时任务
1. Windows键+R 调出此窗口,输入compmgmt.msc (调用的是计算机管理)
2. 创建基本任务
在任务计划程序中右键 选择 创建基本任务。
输入任务名称及描述。
下一步中选择触发器的时间,这里选择每天。
选择开始时间,每隔一天发生一次即每天触发任务。
因为我要启动的是一个.bat的批处理文件,所以选择 启动程序。
在程序中加如需要执行程序的路径,后面两项可以不填写。
完成任务设置。
3. 修改任务属性,设置每n分钟间隔
打开目录 任务计划程序库——>选择刚才创建的任务——>右键属性——>弹出从菜单中,选中 当前定时项,选择编辑,根据提示选择自己需要的更新间隔时间及其他选项。
全部完成后,选择确定 退出即可。
注意,每次编辑后都需要把时间改成比当前时间晚一分钟的时间,这样才看得到效果,不然会一直不运行,并且要设置最高权限运行
二、运行脚本,但只运行了第一句cmd命令
脚本如下:(功能是想要判断网口ip是否在,不在就加ip和dnat)
@echo off
REM 检查以太网2是否存在10.224.255.254/16这个IP
for /f "tokens=*" %%i in ('netsh interface ipv4 show addresses name^="以太网 2" ^| findstr "10.224.255.254"') do (
set ipExists=1
)
echo wait
REM 如果IP不存在,则添加IP并更新端口代理
if not defined ipExists (
netsh interface ipv4 add address "以太网 2" 10.224.255.254 255.255.0.0
netsh interface portproxy delete v4tov4 listenport=6443 listenaddress=10.224.255.254
netsh interface portproxy add v4tov4 listenport=6443 listenaddress=10.224.255.254 connectport=6443 connectaddress=43.247.71.185
)
只运行了netsh interface ipv4 add address "以太网 2" 10.224.255.254 255.255.0.0
原因未知。
解决方法:
单独把下面几句写成一个定时任务好了,脚本如下
@echo off
setlocal
set IP=10.224.255.254
set PORT=6443
set CONNECT_IP=43.247.71.185
echo Checking connection to %IP%:%PORT%...
:: Use PowerShell to test the connection
powershell -Command "try { $tcpConnection = New-Object System.Net.Sockets.TcpClient; $tcpConnection.Connect('%IP%', %PORT%); $tcpConnection.Close(); exit 0 } catch { exit 1 }"
if %errorlevel% neq 0 (
echo Connection failed. Executing portproxy commands...
netsh interface portproxy delete v4tov4 listenport=%PORT% listenaddress=%IP%
netsh interface portproxy add v4tov4 listenport=%PORT% listenaddress=%IP% connectport=%PORT% connectaddress=%CONNECT_IP%
) else (
echo Connection successful. No action needed.
)
timeout /t 3 /nobreak
endlocal