Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 按批处理顺序安排多个网站的ping?_Batch File_Cmd - Fatal编程技术网

Batch file 按批处理顺序安排多个网站的ping?

Batch file 按批处理顺序安排多个网站的ping?,batch-file,cmd,Batch File,Cmd,我已经搜索过了,但是找不到一个可以这样做的方法 这是一个批处理,ping我玩的游戏的服务器,以便我能够找到最适合我的服务器 有没有办法让它ping所有服务器,然后按从最慢响应到最高响应的顺序列出它们 我感谢你的帮助 @TITLE OSRS Ping Checker @ECHO off SET usaworlds=5,6,7,13,14,15,19,20,21,22,23,24,29,30,31,32,37,38,39,40,45,46,47,48,53,54,55,56,57,61,62,69

我已经搜索过了,但是找不到一个可以这样做的方法

这是一个批处理,ping我玩的游戏的服务器,以便我能够找到最适合我的服务器

有没有办法让它ping所有服务器,然后按从最慢响应到最高响应的顺序列出它们

我感谢你的帮助

@TITLE OSRS Ping Checker
@ECHO off

SET usaworlds=5,6,7,13,14,15,19,20,21,22,23,24,29,30,31,32,37,38,39,40,45,46,47,48,53,54,55,56,57,61,62,69,70,74,77,78,86,117

@ECHO --------------------------------------------------- 
@ECHO                     USA
@ECHO --------------------------------------------------- 
FOR %%i IN (%usaworlds%) DO (
Echo | SET /p=World %%i
FOR /F "tokens=5" %%a IN ('Ping oldschool%%i.runescape.com -n 1 ^| FIND "time="') DO Echo %%a
)

PAUSE

使用
start/min
而不是
start/b
确实可以在出现错误时保持屏幕干净(使其速度稍慢,但您不会注意到)

由于要检查/ping的主机很多,顺序处理会持续相当长的时间,特别是在以下情况下,使用多个回显请求并占用平均回复时间

因此,我建议使用不同的方法,让ping请求同时发生:

@title OSRS Ping Checker
@回音
setlocal EnableExtensions DisableDelayedExpansion
rem//在此处定义常量:
设置“_ARG=%~1”&如果定义了_argshift/1&goto:DO_PING&^
rem/(如果提供了参数,则跳转到标签'DO_LOOP')
设置“_USAWORLDS=5,6,7,13,14,15,19,20,21,22,23,24,29,30,31,32,37,38,39,40,45,46,47,48,53,54,55,56,57,61,62,69,70,74,77,78,86117”
设置“_ECHOREQUS=10”&rem//(每个主机要发送的回显请求数)
设置“\u TEMPFILEB=%TEMP%\%~n0\u%RANDOM%”&rem/(临时文件的路径和基本名称)
设置“\u FINALFILE=%~dpn0.txt”&rem/(返回文件的路径和全名)
rem//在子程序中但在并行过程中处理项目:
对于%%I in(%\u%)do(
rem//将每个进程的输出重定向到单个临时文件:
>“%\u TEMPFILEB%\u%%~ I.tmp”start/B“cmd/C”%~f0”:执行PING%%~I%\u ECHOREQUS%
)
rem/*等待所有临时文件都可写入,这意味着
rem所有并行过程均已完成/终止:*/
:投票
对于%%I in(%\u%)do(
rem//尝试不附加任何内容以检查写入访问:
2> nul(>>“%\u TEMPFILEB%\u%%~ I.tmp”rem/)||(
rem//稍等片刻,以免处理器过载:
>nul超时/T 1/NOBREAK
后藤:投票
)
)
rem//将所有单个临时文件合并为一个:
>nul copy/Y“%\u TEMPFILEB%\u*.tmp”“%\u TEMPFILEB%.tmp”/B
rem//根据需要对数据进行排序(字母排序):
排序/R“%\u TEMPFILEB%.tmp”/O“%\u TEMPFILEB%.tmp”
rem//创建返回文件,写入头文件:
>“%\u FINALFILE%”回显ms主机
rem//将已排序的数据追加到返回文件:
>nul copy/Y“%\u最终文件%”+“%\u临时文件B%.tmp”“%\u最终文件%”/B
rem//清理临时文件:
删除“%\u TEMPFILEB%.*.tmp”“%\u TEMPFILEB%.tmp”
端部
退出/B
:杜平
rem//将主机URL构建为ping,设置要发送的回显请求数:
设置“URL=oldschool%~1.runescape.com”
设置/A“NUM=%~2”
rem/*执行ping并捕获响应的最后一行,该行应包含
rem平均回复时间:*/
设置“STR=”
对于/F“delims=“%%P in('2^>nul ping”%URL%'-n%NUM%'),请设置“STR=%%P”
rem//检查响应的最后一行是否包含平均回复时间:
如果未定义STR exit/B
设置“平均值=%STR:*平均值=%”
设置“平均值=%AVG:~1%”
如果“%AVG%”==“STR%”退出/B
rem/*将平均回复时间转换为纯左零填充数字;填充物
rem旨在简化后期(纯字母)排序:*/
设置/A“平均值=平均值”
设置“平均值=000000%AVG%”
rem//返回平均回复时间以及相应的主机URL:
回显%AVG:~-6%%URL%
退出/B
/
>
)将输出转换为临时文件,然后使用。。。
@ECHO off
setlocal enabledelayedexpansion
TITLE OSRS Ping Checker

for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
del x.tmp 2>nul

SET usaworlds=5,6,7,13,14,15,19,20,21,22,23,24,29,30,31,32,37,38,39,40,45,46,47,48,53,54,55,56,57,61,62,69,70,74,77,78,86,117

ECHO --------------------------------------------------- 
ECHO                     USA
ECHO --------------------------------------------------- 
FOR %%i IN (%usaworlds%) DO (
  <nul set /p "=checking World %%i  !CR!"
  FOR /F "tokens=5" %%a IN ('Ping oldschool%%i.runescape.com -n 1 ^| FIND "TTL="') DO (
    for /f "tokens=2 delims==" %%b in ("%%a") do ( 
      set tim=00000%%b
      set tim=!tim:~-7,-2!
    )
  )
  echo !tim! World %%i>>x.tmp
)
for /f "tokens=3" %%c in ('sort /r x.tmp') do set fastest=%%c
echo fastest response from World %fastest%
PAUSE
@ECHO off
setlocal 
TITLE OSRS Ping Checker
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
del %temp%\x.tmp 2>nul
SET usaworlds=wrgl,5,6,7,13,14,15,19,20,21,22,23,24,29,30,31,32,37,38,39,40,45,46,47,48,53,54,55,56,57,61,62,69,70,74,77,78,86,117

@ECHO --------------------------------------------------- 
@ECHO                     USA
@ECHO --------------------------------------------------- 
FOR %%i IN (%usaworlds%) DO (
   start /min "Pinging" cmd /v:on /c "(FOR /F "tokens=9 delims= " %%a IN ('Ping oldschool%%i.runescape.com -n 5^|findstr /e "ms"') do set avrg=       %%a)& >> %temp%\x.tmp echo ^!avrg:~-7,-2^!" World %%i
)
:wait
timeout 1 >nul
tasklist /FI "WINDOWTITLE eq Pinging" |find ".exe" >nul && goto :wait
for /f "tokens=3" %%c in ('sort /r %temp%\x.tmp') do set fastest=%%c
echo fastest response from World %fastest%
PAUSE