最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

批處理程序中的“多線程”處理代碼

 更新時間:2007年03月15日 00:00:00   投稿:mdxy-dxy  
大家都知道,批處理中運行的都是一步步單進程執(zhí)行, 但如果進程執(zhí)行比較慢,如PING一個不通的IP地址,那就會大大影響批處理程序的執(zhí)行效率

如下內(nèi)容將簡單舉例,在WINDOWS下使用批處理做多進程并發(fā),以達到“多線程”的效果。

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

  實現(xiàn)如下:

rem 主程序.bat,只需一行代碼,調用checkip.bat,經(jīng)測試,CPU2.6G MEM1G可并發(fā)40個左右的進程

復制代碼 代碼如下:

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

rem checkip.bat內(nèi)容如下:

復制代碼 代碼如下:

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

根據(jù)以上資料,我自己進行了修改,只需要一個主程序就能執(zhí)行代碼:
程序進化

復制代碼 代碼如下:

@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.判斷參數(shù)是否為空
2.使用start命令,請注意和goto和call的區(qū)別
3.使用ping做延遲
4.使用find命令判斷IP是否開機狀態(tài)并記錄到日志中
5.提示信息禁止輸出。

程序再進化
為了每次執(zhí)行后清空日志文件,修改代碼如下:

復制代碼 代碼如下:

@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表示正常信息重定向禁止輸出,具體博客內(nèi)容其他文章句柄重定向。
2.語句if exist "logip.txt" del LogIp.txt可以使用 echo [%date% %time%]>LogIp.txt 來代替,它們兩句的作用是相同的,具體使用就看個人用法了
以上是自己的一些心得,怕自己忘記,記錄在此。

補充參考 jack_Meng

相關文章

最新評論

平安县| 柞水县| 唐山市| 龙泉市| 迭部县| 合肥市| 宁远县| 黄大仙区| 绥江县| 田林县| 斗六市| 松溪县| 阿克苏市| 长汀县| 葫芦岛市| 黎平县| 芷江| 岳普湖县| 株洲县| 怀远县| 太和县| 佛山市| 湘阴县| 石门县| 涟源市| 会理县| 隆安县| 北海市| 启东市| 五寨县| 桃园市| 中卫市| 普宁市| 宁化县| 大城县| 新源县| 昌黎县| 内乡县| 赣榆县| 丹江口市| 宣恩县|