批处理ping扫描局域网内扫描IP,代码如下:
::主程序隐藏模块
@echo off
setlocal enabledelayedexpansion
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
::主生产程序
for /f "tokens=16" %%l in ('ipconfig ^|find /i "ipv4"') do (
echo %%l>>PI.txt
for /f "delims=. tokens=3" %%S in (PI.txt) do (
for /L %%D in (1,1,255) do (
echo setlocal enabledelayedexpansion >>%%S-%%D.bat
echo set "O=ping 192.168.%%S.%%D >>%%S-%%D.txt">>%%S-%%D.bat
echo %%O%%>>%%S-%%D.bat
echo exit>>%%S-%%D.bat
start %%S-%%D.bat
)
)
del PI.txt
)
::回收模块
timeout 40 > nul
MD project
findstr /m /i "TTL" *.txt > cc.txt
for /f %%J in (cc.txt) do (
move %%J project
)
for /L %%U in (1,1,200) do (
for /L %%D in (1,1,255) do (
del %%U-%%D.bat
del %%U-%%D.txt
)
)
::结束
部分电脑配置太差需要适当调节回收模块中的时间,需要中文,虚拟机网络建议关闭以避免不必要的扫描,如果需要修改扫描其他网络的IP,只需要更改前面的192.168部分即可,主程序的思路是生成多个小程序同时ping,并收集处理ping后的结果。所以性能吃满是正常现象,如果电脑太差导致回收模块提前工作,就会导致产生大量子文件还没来得及删除,删掉并延长时间即可。
至于编写,只需要把上述代码复制到.txt文本后并修改后缀成.bat即可