批处理程序中的“多线程”处理代码

如下内容将简单举例,在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窗口运行的语句,如果你写不出来,可以再来问我。
程序知识点说明:

1.判断参数是否为空
2.使用start命令,请注意和goto和call的区别
3.使用ping做延迟
4.使用find命令判断IP是否开机状态并记录到日志中
5.提示信息禁止输出。

程序再进化
为了每次执行后清空日志文件,修改代码如下:

代码如下:

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

当然,如果你想使用两个bat文件,可以直接把两行代码分别写在两个文件中,每个文件写一行也可以。

说明:

1.在for语句的最后,有ping 127.0.0.1 -n 1 1>nul,-n 1表示ping1次,后面的1>nul表示正常信息重定向禁止输出,具体博客内容其他文章句柄重定向。
2.语句if exist "logip.txt" del LogIp.txt可以使用 echo [%date% %time%]>LogIp.txt 来代替,它们两句的作用是相同的,具体使用就看个人用法了
以上是自己的一些心得,怕自己忘记,记录在此。

补充参考 jack_Meng

(0)

相关推荐

  • 批处理程序中的“多线程”处理代码

    如下内容将简单举例,在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.ba

  • 程序中常用的种代码

    1. 打开新的窗口并传送参数:  传送参数: response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>") 接收参数: string a = Request.QueryString("id"); string b = Request.QueryS

  • 执行批处理bat程序中的条件处理

    以下代码是使用 if /? >> C:\help.txt 生成的. ----------------------------------------------------------------- 执行批处理程序中的条件处理. IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command NOT               指定只有条件为 false 的

  • 初步讲解Ruby编程中的多线程

    每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程. 线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程. Ruby 中我们可以通过 Thread 类来创建多线程,Ruby的线程是一个轻量级的,可以以高效的方式来实现并行的代码. 创建 Ruby 线程 要启动一个新的线程,只需要调用 Thread.new 即可: # 线程 #1 代码部分 Thread.new { # 线程 #2 执行代码 } # 线程 #1 执行代码 实例 以下实例展示了如何在

  • windows批量检测文件(夹)是否存在的批处理程序

    任务举例 在使用了 批量搜索并复制/剪切文件的批处理程序 中的批处理程序之后,往往还需要和原有的关键字比对,知道搜索到了多少文件.这就需要一个工具,能够批量检测一批关键字是否存在于一堆文件里.比如有如下一些文件: AA1 BB2 DD3 BBC1 EE2 Abb 希望从中批量搜索文件名包含 AA BB CC 的文件 希望得到的结果有:AA1,BB2,BBC1,Abb 有点类似Excel里的vlookup命令,所不同的是用批处理程序可以直接在文件目录下操作,而不需要导出文件名的列表. 实现方法 与

  • Windows批量搜索并复制/剪切文件的批处理程序实例

    搜索包含关键字的文件名是最常用的功能之一,比如按人名搜索mp3.按内容搜索图纸等等,当需要搜索成百上千个关键词时,会消耗大量的人力和时间,这时就需要批量搜索功能.本文介绍一个我自己编写的.用于批量搜索文件的批处理程序. 搜索包含关键字的文件名是最常用的功能之一,比如按人名搜索mp3.按内容搜索图纸等等,当需要搜索成百上千个关键词时,会消耗大量的人力和时间,这时就需要批量搜索功能. 传统方法 Windows XP自带了批量搜索的功能,在按(Win+F)弹出的搜索框中,填入若干关键词,用逗号隔开,这

  • Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。

    Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序.call 命令接受用作调用目标的标签.如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用. 语法 call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 参数 [Drive:}[Path] FileName  指定要调用的批处理程序的位置和名称.filename 参数必须具有 .bat 或 .cmd 扩展名.  BatchPara

  • .Net中导出数据到Excel(asp.net和winform程序中)

    一.asp.net中导出Excel的方法: 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出流写给浏览器.在Response输出时,t分隔的数据,导出Excel时,等价于分列,n等价于换行. 1.将整个html全部输出Excel 此法将html中所有的内容,如按钮,表格,图片等全部输出到Excel中. 复制代码 代码如下: Response.Clear(); Response.Buffer= tru

  • 微信小程序中如何实现动态改变SVG颜色和尺寸

    目录 前言 1. 创建一个微信小程序项目,准备好SVG素材 2. 封装修改svg颜色的工厂函数 3. 封装一个自定义组件,方便使用svg图标 4. 注册组件,使用 结语 总结 前言 最近在做项目的时候总是因为组件库的图标无法满足需求而烦恼,而每次需要新的图标又要去找字体图标.生成新的css代码而苦恼. 所以想到用svg来代替,体积也小,主要就是方便一点,不用每次还重新生成代码.但是一个最重要的问题也随之出现,小程序中不支持svg代码....但是也有曲线救国的方式,image可以显示svg,还好没

  • Java程序员面试中的多线程问题总结

    很多核心 Java 面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework),理解核心线程概念时,娴熟的实际经验是必需的.这篇文章收集了 Java 线程方面一些典型的问题,这些问题经常被高级工程师所问到. 0.Java 中多线程同步是什么? 在多线程程序下,同步能控制对共享资源的访问.如果没有同步,当一个 Java 线程在修改一个共享变量时,另外一个线程正在使用或者更新同一个变量,这样容易导致程序出现错误的结果. 1.解释实现多线程的几种方法?

随机推荐