Board logo

标题: 批处理判断U盘已插入并自动复制所有内容 [打印本页]

作者: Batcher    时间: 2009-3-17 21:03     标题: 批处理判断U盘已插入并自动复制所有内容

方案一:原来写了有两个版本,一个用了SLEEP,一个用ping,功能都是一样滴,现在我把两个综合了,在,没有SLEEP的情况下照常使用! 其他的情况看说明!希望高手修改加精! 按照惯例,源码是公开的,大家可以修改,但在可能的情况下尽量保持原作者的信息,这不仅是对别人劳动成果的尊重,也是做人的基本道理。。。
copy.cmd
  1. @echo off
  2. title $$$$*晗*晗*制*造*$$$$
  3. mode con: cols=14 lines=1
  4. :again
  5. cls
  6. del /Q /f "%temp%\copy.tmp" >nul 2>nul
  7. 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"
  8. findstr /i "可移动驱动器" "%temp%\copy.tmp"
  9. if errorlevel==1 goto end
  10. if errorlevel==0 goto copy
  11. :end
  12. rem 没有检测到可移动磁盘!
  13. if not exist %temp%\sleep.exe ping 127.0.0.1 -n 20 >nul 2>nul
  14. %temp%\sleep.exe 20s
  15. goto again
  16. :copy
  17. if exist c:\copy goto goon
  18. cd\
  19. cd /d c:
  20. md copy
  21. :goon
  22. for /f "tokens=1" %%i in ('findstr /i "可移动驱动器" "%temp%\copy.tmp"') do (
  23. xcopy /e /y %%i\*.* c:\copy >nul 2>nul
  24. )
  25. rem 已复制,请及时清理文件!
  26. if not exist %temp%\sleep.exe ping 127.0.0.1 -n 20 >nul 2>nul
  27. %temp%\sleep.exe 20s
  28. goto again
复制代码
安装U盘自动复制.cmd
  1. @echo off
  2. mode con: cols=80 lines=40
  3. color 17
  4. :start
  5. cls
  6. title $$$$*晗*晗*制*造*$$$$
  7. echo.
  8. echo.
  9. echo.
  10. echo.
  11. echo ====================================================================
  12. echo.
  13. echo.
  14. echo 安装U盘自动复制
  15. echo.
  16. echo 欢迎使用,请选择选项(1,2,3,4,5,6)
  17. echo.
  18. echo.
  19. echo [1] 安装程序
  20. echo [2] 运行程序
  21. echo [3] 关闭程序
  22. echo [4] 卸载程序
  23. echo [5] 生成快捷方式
  24. echo [6] 使用帮助
  25. echo [7] X键关闭
  26. echo.
  27. echo.
  28. echo.
  29. echo    提示:如果你计算机安装有杀毒软件,请授权此VBS代码!
  30. echo.
  31. echo.
  32. echo.
  33. echo.
  34. echo $$$ 晗晗制造,版本1.0 $$$
  35. echo.
  36. echo ====================================================================
  37. echo.
  38. set /p choice=请输入:
  39. if {%choice%}=={} goto start
  40. if /i %choice%==1 goto install
  41. if /i %choice%==2 goto open
  42. if /i %choice%==3 goto close
  43. if /i %choice%==4 goto uninstall
  44. if /i %choice%==5 goto shutcut
  45. if /i %choice%==6 goto help
  46. if /i %choice%==x goto shut
  47. goto start
  48. :install
  49. rem ==============================安装程序=============================
  50. if exist %temp%\copy.cmd del /Q /f "%temp%\copy.cmd"
  51. copy copy.cmd "%temp%\copy.cmd" >nul 2>nul
  52. copy sleep.exe "%temp%\sleep.exe" >nul 2>nul
  53. rem ==============================隐藏窗口=============================
  54. if exist %temp%\hide.vbs del /Q %temp%\hide.vbs
  55. echo.
  56. echo 如果你计算机安装有杀毒软件,请授权此VBS代码
  57. reg delete "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f >nul 2>nul
  58. reg delete "HKEY_CLASSES_ROOT\piffile" /v IsShortcut /f >nul 2>nul
  59. set path=%temp%\copy.cmd
  60. echo set ws=WScript.CreateObject("WScript.Shell") >"%temp%\hide.vbs"
  61. echo ws.Run "%path%",0 >>%temp%\hide.vbs
  62. rem ==============================建立终止=============================
  63. echo @echo off >%temp%\kill.cmd
  64. echo mode con: cols=20 lines=2 >>%temp%\kill.cmd
  65. echo echo 程序已经成功终止!>>%temp%\kill.cmd
  66. echo pause ^>nul 2^>nul >>%temp%\kill.cmd
  67. echo tskill ping ^>nul 2^>nul >>%temp%\kill.cmd
  68. echo tskill xcopy ^>nul 2^>nul >>%temp%\kill.cmd
  69. echo tskill sleep ^>nul 2^>nul >>%temp%\kill.cmd
  70. echo tskill cmd ^>nul 2^>nul >>%temp%\kill.cmd
  71. echo exit ^>nul 2^>nul >>%temp%\kill.cmd
  72. rem ==============================建立快捷=============================
  73. :shutcut
  74. echo.
  75. if not exist "%temp%\hide.vbs" goto start
  76. set path2=%temp%\hide.vbs
  77. echo [InternetShortcut] >>U盘自动复制.url
  78. echo URL="%path2%" >>U盘自动复制.url
  79. echo IconIndex=29 >>U盘自动复制.url
  80. echo IconFile=C:\windows\system32\shell32.dll >>U盘自动复制.url
  81. set path3=%temp%\kill.cmd
  82. echo [InternetShortcut] >>终止U盘自动复制.url
  83. echo URL="%path3%" >>终止U盘自动复制.url
  84. echo IconIndex=29 >>终止U盘自动复制.url
  85. echo IconFile=C:\windows\system32\shell32.dll >>终止U盘自动复制.url
  86. echo 成功结束!请直接运行快捷方式!
  87. pause >nul 2>nul
  88. goto start
  89. rem ==============================安装结束=============================
  90. :uninstall
  91. rem ==============================卸载程序=============================
  92. echo.
  93. tskill ping >nul 2>nul
  94. tskill xcopy >nul 2>nul
  95. tskill sleep >nul 2>nul
  96. del /Q /f "%temp%\copy.cmd" >nul 2>nul
  97. del /Q /f "%temp%\hide.vbs" >nul 2>nul
  98. del /Q /f "%temp%\copy.tmp" >nul 2>nul
  99. del /Q /f "%temp%\sleep.exe" >nul 2>nul
  100. del /Q /f "%temp%\kill.cmd" >nul 2>nul
  101. del /Q /f U盘自动复制.url >nul 2>nul
  102. del /Q /f 终止U盘自动复制.url >nul 2>nul
  103. echo 程序已经成功卸载!
  104. reg add "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f >nul 2>nul
  105. reg add "HKEY_CLASSES_ROOT\piffile" /v IsShortcut /f >nul 2>nul
  106. pause >nul 2>nul
  107. goto start
  108. rem ==============================卸载结束=============================
  109. :open
  110. rem ==============================运行程序=============================
  111. echo.
  112. if not exist %temp%\copy.cmd goto start
  113. "%temp%\hide.vbs"
  114. echo 程序已经成功开始自运行(20秒扫描一次)!
  115. pause >nul 2>nul
  116. exit
  117. rem ==============================运行结束=============================
  118. :close
  119. rem ==============================终止程序=============================
  120. echo.
  121. if not exist %temp%\copy.cmd goto start
  122. echo 程序已经成功结束自运行!
  123. pause >nul 2>nul
  124. tskill ping >nul 2>nul
  125. tskill xcopy >nul 2>nul
  126. tskill sleep >nul 2>nul
  127. tskill cmd >nul 2>nul
  128. exit
  129. rem ==============================终止结束=============================
  130. :help
  131. rem ==============================使用帮助=============================
  132. cls
  133. echo.
  134. echo.
  135. echo 本工具适用于Windows XPsp2系统,由此造成的一切损失,本人不负任何责任.
  136. echo.
  137. echo.
  138. echo 使用方法: 1 点击安装程序
  139. echo.
  140. echo 2 如果你计算机安装有杀毒软件,请授权此VBS代码
  141. echo.
  142. echo 3 第一次安装可能需要先运行,然后结束一次才能生效(视系统设置而定)
  143. echo.
  144. echo 4 安装后请用快捷方式启动或者关闭,无需用安装程序启动
  145. echo.
  146. echo 5 本程序可以在U盘插入前运行,也可以在插入后运行
  147. echo.
  148. echo 6 点击运行程序,程序将自动每20秒执行一次
  149. echo.
  150. echo 7 请确保你的c:\有足够的空间,程序运行时候建议不要插移动硬盘
  151. echo.
  152. echo 8 请务必确认你要copy的U盘无毒
  153. echo.
  154. echo 9 本程序在扫描时比较占内存,建议每次使用后关闭
  155. echo.
  156. echo 10 建立的快捷方式,你可以改名并把它放在任何地方,包括启动菜单
  157. echo.
  158. echo 11 请及时清理默认保存目录c:\copy文件夹里边的文件
  159. echo.
  160. echo 12 本软件不保证copy数据的正确性
  161. echo.
  162. echo 13 本软件不要使用于非法用途
  163. echo.
  164. echo.
  165. echo 本软件为免费软件欢迎大家使用
  166. echo.
  167. echo 按任意键返回主菜单
  168. pause >nul 2>nul
  169. goto start
  170. rem ==============================帮助结束=============================
  171. :shut
  172. rem ==============================关闭程序=============================
  173. exit
  174. rem ==============================关闭结束=============================
复制代码
打包下载:[attach]1042[/attach]
方案二:其实用VBS可以完成此工作,且隐藏进行(如下例)。这个脚本的好处是,对那些识别为移动硬盘类型的U盘也可以成功复制文件。
  1. 1. 监视新增所有驱动器,并复制所有新驱动器中的文件到D盘下
  2. '随时监视插入的U盘或移动硬盘,有则自动复制其中的所有文件到d:\Tmp中
  3. '把 fso.CopyFile 改成 fso.CopyFolder 则可以复制文件夹
  4. '注意:包括隐藏和系统属性的文件或文件夹均被复制
  5. '覆盖true 不覆盖false 不能覆盖具有只读属性的文件和文件夹
  6. '若出现多个新盘符的话,每个盘中的文件均被复制
  7. Set fso = CreateObject("Scripting.FileSystemObject")
  8. Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  9. Set colEvents = objWMIService.ExecNotificationQuery ("Select * From __InstanceOperationEvent Within 5 Where " _
  10. & "TargetInstance isa 'Win32_LogicalDisk'")
  11. Do While True
  12. Set objEvent = colEvents.NextEvent
  13. If objEvent.TargetInstance.DriveType = 3 Then
  14. If objEvent.Path_.Class = "__InstanceCreationEvent" Then
  15. NewDri = objEvent.TargetInstance.DeviceId
  16. fso.CopyFile NewDri & "\*","d:\Tmp\",true
  17. End If
  18. End If
  19. Loop
复制代码
2.监视新增驱动器,只复制其中第1个分区中的所有文件到D盘下
  1. Dim NewDri(9)
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  4. Set colEvents = objWMIService.ExecNotificationQuery ("Select * From __InstanceOperationEvent Within 5 Where " _
  5. & "TargetInstance isa 'Win32_LogicalDisk'")
  6. Do While True
  7. Set objEvent = colEvents.NextEvent
  8. If objEvent.TargetInstance.DriveType = 3 Then
  9. If objEvent.Path_.Class = "__InstanceCreationEvent" Then
  10. i=i + 1
  11. NewDri(i) = objEvent.TargetInstance.DeviceId
  12. fso.CopyFile NewDri(i) & "\*","d:\Tmp\",true
  13. End If
  14. End If
  15. 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