标题: 内网类似BT讯雷下载 欢迎拍砖
[打印本页]
作者: a9319751
时间: 2006-12-14 01:07
标题: 内网类似BT讯雷下载 欢迎拍砖
问题很多,大家先看看
怎么把文件分成多块,使用多线程?
怎么把变量名字当作另一个变量呢?
变量排序后怎么知道最小变量对应的IP?
@echo off && setlocal enabledelayedexpansion
::内网类似BT讯雷下载:::::::::::::
::假设机器名为IP的后缀:::::::::::::::
::假设只有10台机器:::::::::::::::
::暂时不能解决多线程:::::::::::::::
::此代码未测试,只为学习:::::::::::::
:: code by zzlike 2006-12-12 CMD@XP::::
:::::::::::::::::::::::::::::::::::::::
::******配置文件开始*****************::
:::服务器ip
set serverip=192.168.0.250
:::服务器可读目录
set serverrd=file
:::服务器可写目录
set serverwd=log
:::本地目录
set localwd=d:
::******配置文件结束*****************::
if "%1"=="" goto help
if "%1"=="/?" goto help
if "%1"=="%~n1" goto help
if not exist "\\%serverip%\%serverrd%\%1" goto help
if not exist "\\%serverip%\%serverwd%\%~n1.txt" echo. > \\%serverip%\%serverwd%\%~n1.txt
type \\%serverip%\%serverwd%\%~n1.txt |find "%COMPUTERNAME%" goto :eof
for /f "tokens=7 delims=^<= " %%i in ('ping -n 1 %serverip% ^|find "TTL"') do set snum=%%i
set /a snum=%snum:~0,-3%
::测试中不知道为什么空格没有替换掉 例 "snum=1ms " 未解,所以去掉了后三个字符
for /f "delims=" %%i in (\\%serverip%\%serverwd%\%~n1.txt) do (
for /f "tokens=7 delims=^<= " %%j in ('ping -n 1 192.168.0.%%i ^|find "TTL"') do (
if "%%i" == "1" set 1num=%%j && set /a 1num=%1num:~0,-3%
if "%%i" == "2" set 2num=%%j && set /a 2num=%2num:~0,-3%
if "%%i" == "3" set 3num=%%j && set /a 3num=%3num:~0,-3%
if "%%i" == "4" set 4num=%%j && set /a 4num=%4num:~0,-3%
if "%%i" == "5" set 5num=%%j && set /a 5num=%5num:~0,-3%
if "%%i" == "6" set 6num=%%j && set /a 6num=%6num:~0,-3%
if "%%i" == "7" set 7num=%%j && set /a 7num=%7num:~0,-3%
if "%%i" == "8" set 8num=%%j && set /a 8num=%8num:~0,-3%
if "%%i" == "9" set 9num=%%j && set /a 9num=%9num:~0,-3%
if "%%i" == "10" set 10num=%%j && set /a 10num=%10num:~0,-3%
)
)
::以下代码code by 3742668 2006-10-4,从小到大排列,暂时认为ping值最小的速度最快
set numbers=%snum% %1num% %2num% %3num% %4num% %5num% %6num% %7num% %8num% %9num% %10num%
md sort_tmp && pushd sort_tmp
for %%i in (%numbers%) do fsutil file createnew %%i %%i >nul
for /f "delims=" %%i in ('dir /os /b') do (
set /a num+=1
set min=%%i
if "%num%" == "1" goto min
)
:min
popd && rd /s /q sort_tmp
if "%min%" == "snum" copy /y \\%serverip%\%serverrd%\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
if "%min%" == "1num" copy /y \\192.168.0.1\d\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
if "%min%" == "2num" copy /y \\192.168.0.2\d\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
if "%min%" == "3num" copy /y \\192.168.0.3\d\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
if "%min%" == "4num" copy /y \\192.168.0.4\d\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
if "%min%" == "5num" copy /y \\192.168.0.5\d\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
if "%min%" == "6num" copy /y \\192.168.0.6\d\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
if "%min%" == "7num" copy /y \\192.168.0.7\d\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
if "%min%" == "8num" copy /y \\192.168.0.8\d\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
if "%min%" == "9num" copy /y \\192.168.0.9\d\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
if "%min%" == "10num" copy /y \\192.168.0.10\d\%1 %localwd%\%1 && echo %COMPUTERNAME% >> \\%serverip%\%serverwd%\%~n1.txt & goto :eof
:help
pause
[
Last edited by a9319751 on 2006-12-14 at 01:11 AM ]