V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
pppguest3962
V2EX  ›  问与答

请教 win 的批处理,创建一个 cmd 新窗口,执行一个 ping 命令?(不阻塞)

  •  
  •   pppguest3962 · 2022-06-28 09:26:00 +08:00 · 1410 次点击
    这是一个创建于 911 天前的主题,其中的信息可能已经有所发展或是发生改变。

    创建一个新的 cmd 窗口,执行 ping 192.168.1.1 -t
    不阻塞,继续执行下一条批处理命令
    请教写法?

    5 条回复    2022-06-28 11:24:54 +08:00
    cczhrd
        1
    cczhrd  
       2022-06-28 09:35:14 +08:00   ❤️ 1
    start cmd /k ping 192.168.1.1 -t
    start cmd /k ping 192.168.1.2 -t
    wudicgi
        2
    wudicgi  
       2022-06-28 09:37:14 +08:00
    start /b 可以不打开新窗口,但像 ping -t 这种一直运行的程序,不知道怎么结束它
    crab
        3
    crab  
       2022-06-28 09:58:02 +08:00
    @wudicgi ctrl+break 试下
    Tumblr
        4
    Tumblr  
       2022-06-28 10:32:57 +08:00   ❤️ 1
    这种需求我一般建议在 PowerShell 里以 Job 运行,可以后台运行而不影响后面的任务。
    至于如何获取 job 的结果,有两种方法: 一是直接在控制台 recieve ,二是执行的时候直接将结果输出到文件。
    ( PowerShell 里可以直接用 cmd 的命令,所以其实也不需要过多考虑“怎么在 PowerShell 里执行”)
    Turismo
        5
    Turismo  
       2022-06-28 11:24:54 +08:00
    试试看?

    https://www.zhangshengrong.com/p/QrXeYmdXdJ/

    /*------------------------------------------------------------------------------------------------------------*/
    如下内容将简单举例,在 WINDOWS 下使用批处理做多进程并发,以达到“多线程”的效果。

      例:需要 PING 192.168.0.1 到 192.168.0.254 的所有 IP 地址,并将是否能 PING 通的结果输出到 log.txt

      实现如下:

    rem 主程序.bat ,只需一行代码,调用 checkip.bat ,经测试,CPU2.6G MEM1G 可并发 40 个左右的进程

    复制代码 代码如下:

    for /l %%i in (1,1,254) do (start /min cmd /c checkip.bat 192.168.0.%%i)

    rem checkip.bat 内容如下:

    复制代码 代码如下:

    ping %1 -n 1
    if %errorlevel%==0 (echo %1 alive>>log.txt) else (echo %1 dead>>log.txt)

    根据以上资料,我自己进行了修改,只需要一个主程序就能执行代码:
    程序进化

    复制代码 代码如下:

    @echo off
    if "%1"=="" (for /l %%a in (1,1,100) do (start /min cmd /c %0 10.120.6.%%a&ping 127.0.0.1 -n 1>nul))
    if not "%1"=="" (ping -a %1 -n 1|find "reply" /i&&echo alive %1>>LogIP.txt||echo dead %1>>LogIP.txt)

    为了使代码过长,方便阅读,我分成了两行,其实一行就可以完成的。你可以自己修改,直接在 cmd 窗口运行的语句,如果你写不出来,可以再来问我。

    /*------------------------------------------------------------------------------------------------------------*/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3086 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:19 · PVG 21:19 · LAX 05:19 · JFK 08:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.