中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 内网类似BT讯雷下载 欢迎拍砖
作者:
标题: 内网类似BT讯雷下载 欢迎拍砖 上一主题 | 下一主题
a9319751
中级用户





积分 439
发帖 170
注册 2006-1-9
状态 离线
『楼 主』:  内网类似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 ]



bat c c++
2006-12-14 01:07
查看资料  发送邮件  发短消息 网志  OICQ (5040366)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: