制作的BAT有点问题。
下面这段批处理@echo off
set var=10.111.96.28
:PingLoop
ping %var% -n 1 | find "TTL=" > nul
if errorlevel 1 (
timeout /t 1 > nul
goto PingLoop
)
start "URL Title" "http://10.111.96.28/cgi-bin/consoleONEng.cgi?D=%05%02%00%00%00%00%00"
当IP通是,打开的网页是错误的。浏览器里显示
http://10.111.96.28/cgi-bin/consoleONEng.cgi?D=C:\Users\Frank\Desktop\text.bat5C:\Users\Frank\Desktop\text.bat2C:\Users\Frank\Desktop\text.bat0C:\Users\Frank\Desktop\text.bat0C:\Users\Frank\Desktop\text.bat0C:\Users\Frank\Desktop\text.bat0C:\Users\Frank\Desktop\text.bat0
并未正确的指向这个URL,是为什么? 问题在于批处理中URL的格式化以及特殊字符的处理。在你的代码中,URL 中的一些字符被解释为批处理命令的一部分,导致 URL 格式错误。解决这个问题的方法是对 URL 进行适当的转义。在 Windows 的批处理中,&, <, >, |, ^, 和 " 等字符是特殊字符,需要进行转义处理。 以下是经过修改的批处理代码,用于正确处理 URL:
@echo off
set var=10.111.96.28
:PingLoop
ping %var% -n 1 | find "TTL=" > nul
if errorlevel 1 (
timeout /t 1 > nul
goto PingLoop
)
REM 注意这里对URL中的特殊字符进行了转义处理
start "URL Title" "http://10.111.96.28/cgi-bin/consoleONEng.cgi?D=%%43%%3a%%5c%%55%%73%%65%%72%%73%%5c%%46%%72%%61%%6e%%6b%%5c%%44%%65%%73%%6b%%74%%6f%%70%%5c%%74%%65%%78%%74%%2e%%62%%61%%74%%35%%43%%3a%%5c%%55%%73%%65%%72%%73%%5c%%46%%72%%61%%6e%%6b%%5c%%44%%65%%73%%6b%%74%%6f%%70%%5c%%74%%65%%78%%74%%2e%%62%%61%%74%%32%%43%%3a%%5c%%55%%73%%65%%72%%73%%5c%%46%%72%%61%%6e%%6b%%5c%%44%%65%%73%%6b%%74%%6f%%70%%5c%%74%%65%%78%%74%%2e%%62%%61%%74%%30%%43%%3a%%5c%%55%%73%%65%%72%%73%%5c%%46%%72%%61%%6e%%6b%%5c%%44%%65%%73%%6b%%74%%6f%%70%%5c%%74%%65%%78%%74%%2e%%62%%61%%74%%30%%43%%3a%%5c%%55%%73%%65%%72%%73%%5c%%46%%72%%61%%6e%%6b%%5c%%44%%65%%73%%6b%%74%%6f%%70%%5c%%74%%65%%78%%74%%2e%%62%%61%%74%%30%%43%%3a%%5c%%55%%73%%65%%72%%73%%5c%%46%%72%%61%%6e%%6b%%5c%%44%%65%%73%%6b%%74%%6f%%70%%5c%%74%%65%%78%%74%%2e%%62%%61%%74%%30%%43%%3a%%5c%%55%%73%%65%%72%%73%%5c%%46%%72%%61%%6e%%6b%%5c%%44%%65%%73%%6b%%74%%6f%%70%%5c%%74%%65%%78%%74%%2e%%62%%61%%74%%30"
在这个修改后的代码中,URL 中的特殊字符都进行了转义处理,以确保 URL 被正确解析和打开。请注意,这可能会导致 URL 看起来非常冗长,但这是为了确保在批处理环境中正确处理特殊字符。 1107934496 发表于 2023-8-23 09:53
以下是经过修改的批处理代码,用于正确处理 URL:
@echo off
@echo off
set var=10.111.96.28
:PingLoop
ping %var% -n 1 | find "TTL=" > nul
if errorlevel 1 (
timeout /t 1 > nul
goto PingLoop
)
start "URL Title" "http://10.111.96.28/cgi-bin/consoleONEng.cgi?D=%%05%%02%%00%%00%%00%%00%%00"
经过转义后打开的网页,没有http://头,
直接是10.111.96.28/cgi-bin/consoleONEng.cgi?D=%05%02%00%00%00%00%00
这导致此网页功能没有激活。 本帖最后由 1107934496 于 2023-8-23 10:11 编辑
试试这个
@echo off
set var=10.111.96.28
:PingLoop
ping %var% -n 1 | find "TTL=" > nul
if errorlevel 1 (
timeout /t 1 > nul
goto PingLoop
)
REM 注意:这里的 URL 使用了 call 命令以确保整个 URL 被当作一个参数传递
call :OpenURL "http://10.111.96.28/cgi-bin/consoleONEng.cgi?D=%%05%%02%%00%%00%%00%%00%%00"
exit /b
:OpenURL
start "URL Title" %1
exit /b
补充:版规规定了禁止使用ChatGPT或其他AI生成的答案解答问题,这个使用call打开URL的方式也不行的话,你再试试把之前那个转义过的url替换进来
不懂不懂{:1_908:} 把最后一句改成
start http://10.111.96.28/cgi-bin/consoleONEng.cgi?D=%05%02%00%00%00%00%00
试试 start "URL Title" ""http://10.111.96.28/cgi-bin/consoleONEng.cgi?D=%05%02%00%00%00%00%00"" 批处理特殊字符转义简直头大
页:
[1]