日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

bat中的“多线程”处理代码

發布時間:2024/1/3 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 bat中的“多线程”处理代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家都知道,批處理中運行的都是一步步單進程執行, 但如果進程執行比較慢,如PING一個不通的IP地址,那就會大大影響批處理程序的執行效率。
  如下內容將簡單舉例,在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)

出處:http://www.jb51.net/article/8467.htm
====================================================================================

根據以上資料,我自己進行了修改,只需要一個主程序就能執行代碼:
程序進化
@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 來代替,它們兩句的作用是相同的,具體使用就看個人用法了
以上是自己的一些心得,怕自己忘記,記錄在此。
轉發請注明出處。

總結

以上是生活随笔為你收集整理的bat中的“多线程”处理代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。