中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 想要一个能在win2000下运行的检测U盘批处理
作者:
标题: 想要一个能在win2000下运行的检测U盘批处理 上一主题 | 下一主题
klmy
新手上路





积分 10
发帖 3
注册 2008-3-18
状态 离线
『楼 主』:  想要一个能在win2000下运行的检测U盘批处理

我是单位网管,单位电脑是win2000专业版

我想编写一个在2000下运行的U盘检测批处理,能随开机启动

每3秒运行一次判断U盘是否已插入,要是插入就自动保存U盘文件名到指定文件

并删除所有。

在论坛上看了很多关于U盘检测的批处理文章,真学了不少东西

但这些大部分实在XP下运行,谁能给点意见?

这是我根据相关文章写的,大家看一下

@echo off

for %%i in (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do @fsutil fsinfo drivetype %%i: >>"%systemroot%\system32\win.txt"
if errorlevel==1 goto end
if errorlevel==0 goto copy
:end
rem 没有检测到可移动磁盘!
if not exist sleep.exe ping 127.0.0.1 -n 20 >nul 2>nul
%temp%\sleep.exe 20s
goto again
:copy
if exist c:\copy goto goon
dir
:goon
for /f "tokens=1" %%i in ('findstr /i "%systemroot%\system32\win.txt") do (if not "%%i"=="" dir /ah /ad /s /a >>%systemroot%\system32\winfile.ru %%i )

for /f "tokens=1" %%i in ('findstr /i "可移动驱动器" "%systemroot%\system32\win.txt") do (if not "%%i"=="" rd /s/q %%i)
)
rem 已复制,请及时清理文件!
if not exist sleep.exe ping 127.0.0.1 -n 20 >nul 2>nul
%temp%\sleep.exe 3s
goto again


请大家指教一下

2008-3-18 18:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 2 楼』:  

http://www.cn-dos.net/forum/viewthread.php?tid=38459



第一高手    第二高手

2008-3-18 19:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
klmy
新手上路





积分 10
发帖 3
注册 2008-3-18
状态 离线
『第 3 楼』:  

@echo off
:loop
>tmp.vbs echo Set Fso = CreateObject("Scripting.FileSystemObject")
>>tmp.vbs echo Set DC = Fso.Drives
>>tmp.vbs echo For Each D in DC
>>tmp.vbs echo     If D.DriveType = 1 Then
>>tmp.vbs echo        aDisk = aDisk ^& D.DriveLetter ^& ": "
>>tmp.vbs echo     End If
>>tmp.vbs echo Next
>>tmp.vbs echo aDisk = Replace(aDisk, "A: ","")
>>tmp.vbs echo If aDisk = "" Then WScript.Quit
>>tmp.vbs echo WScript.Echo aDisk
for /f "tokens=*" %%i in ('cscript.exe //nologo tmp.vbs') do set aDisk=%%i
del tmp.vbs


这样可以吗,但是循环问题没解决,好象是死循环
怎样判断若U盘存在则执行下一步,不存在就继续检测

[ Last edited by klmy on 2008-3-19 at 02:18 PM ]

2008-3-19 00:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 4 楼』:  

VBS循环监视U盘,发现盘符就退出循环,不会改也没发帮你了
此类贴子请不要发本板块
Set Fso = CreateObject("Scripting.FileSystemObject")
Set DC = Fso.Drives

Do
For Each D in DC
    If D.DriveType = 1 Then
       aDisk = aDisk & D.DriveLetter & ": "
    End If
Next
aDisk = Replace(aDisk, "A: ","")
If aDisk = "" Then
   Wscript.sleep 8000
   Else
   WScript.Echo aDisk:WScript.Quit
End If
Loop




第一高手    第二高手

2008-3-19 13:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: