博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批处理实现多线程执行命令列表文件
阅读量:4981 次
发布时间:2019-06-12

本文共 1038 字,大约阅读时间需要 3 分钟。

批处理实现多线程执行命令列表

 

工作中碰到多线程执行命令列表的情况,研究一番,编写出来与大家分享。高手看了也请指点,指教一些更简单的办法。

批处理是一种单线程的简单脚本,只有上条命令执行完后,才能执行下条命令。如果上条命令执行花费很长时间,如超时,连接失败不断尝试等,下一条命令头发白了,可能还等不到它执行。

百度问答上找到一个方法可以实现多线程,原理:利用bat调用bat来实现多线程。

 

例如:网管希望同时ping局域中所有主机,实现方法如下。

首先,建立两个批处理文件;

1.bat文件代码如下:

 for /l %%i in (2,1,10) do start 2.bat 192.168.0.%%i   

 

2.bat文件代码如下:

ping %1 -n 10

 

运行1.bat后,1.bat调用2.bat,可以实现多线程。测试时可以看到屏幕上刷的出现了一大片的窗口,每个窗口都独立运行。

 

实现了多线程的目标了,下面解决执行命令列表。举个探测端口的例子。网管希望多线程同时执行端口验证的命令。 

把要命令都存放在文件cmdlist.txt中

cmdlist.txt文件代码如下:

telnet 10.1.1.1 22

telnet 10.1.1.1 80

telnet 10.1.1.1 443

telnet 10.1.1.1 8080

 

多线程需要的2个bat ,内容如下:

1.bat文件代码如下:

 for /l %%i in (1,1,4) do start 2.bat %%i 

::一个for循环,从1到4,10是cmdlist.txt中命令的行数,步长为1,调用2.bat,传递参数%%i。 %%i是指cmdlist.txt中命令的序号。不懂的童鞋自己找资料。

 

2.bat文件代码如下:

@echo off ::关闭回显

setlocal enabledelayedexpansion ::变量延迟

for /f "tokens=*" %%i in (cmdlist.txt) do (

set /a  n+=1         ::设置自变量表达式

if "!n!"=="%1" echo %%i|cmd   ::执行第%%i行命令

)

 

批处理语言可读性比较差,问了一些朋友,他们建议用VBS脚本来编写。

如果工作中碰到类似的需求,只要把上面代码稍加修改就可以用了。

转载于:https://www.cnblogs.com/pentesterlab-beginner/p/4043976.html

你可能感兴趣的文章
块存储、文件存储、对象存储意义及差异
查看>>
mysql
查看>>
迪米特法则
查看>>
第三小节之Java API
查看>>
树莓派Android Things物联网开发:GitHub案例程序汇总
查看>>
游戏分析菜鸟必须阅读的5篇文章(译自国外网站)
查看>>
《SQL 基础教程》第四章:数据更新
查看>>
Nine-patch
查看>>
P1387 最大正方形
查看>>
百度地图 - demo
查看>>
MFC单文档视图拆分窗口和相关链接
查看>>
(转)轻松学习Objective-C消息转发
查看>>
python3之迭代器&生成器
查看>>
RabbitMQ-安装以及入门
查看>>
浏览器缓存策略
查看>>
hdu3873 有约束条件的最短路
查看>>
【清华集训2014】mex
查看>>
冲刺七
查看>>
MySql学习13----触发器
查看>>
圆形百分比进度表
查看>>