方案一:原来写了有两个版本,一个用了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 | | | | 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 | | ) | | | | if not exist %temp%\sleep.exe ping 127.0.0.1 -n 20 >nul 2>nul | | %temp%\sleep.exe 20s | | goto againCOPY |
安装U盘自动复制.cmd | @echo off | | mode con: cols=80 lines=40 | | color 17 | | :start | | cls | | title $$$$*晗*晗*制*造*$$$$ | | echo. | | echo. | | echo. | | echo. | | echo ==================================================================== | | echo. | | echo. | | echo 安装U盘自动复制 | | echo. | | echo 欢迎使用,请选择选项(1,2,3,4,5,6) | | echo. | | echo. | | echo [1] 安装程序 | | echo [2] 运行程序 | | echo [3] 关闭程序 | | echo [4] 卸载程序 | | echo [5] 生成快捷方式 | | echo [6] 使用帮助 | | echo [7] X键关闭 | | echo. | | echo. | | echo. | | echo 提示:如果你计算机安装有杀毒软件,请授权此VBS代码! | | echo. | | echo. | | echo. | | echo. | | echo $$$ 晗晗制造,版本1.0 $$$ | | echo. | | echo ==================================================================== | | echo. | | set /p choice=请输入: | | if {%choice%}=={} goto start | | if /i %choice%==1 goto install | | if /i %choice%==2 goto open | | if /i %choice%==3 goto close | | if /i %choice%==4 goto uninstall | | if /i %choice%==5 goto shutcut | | if /i %choice%==6 goto help | | if /i %choice%==x goto shut | | goto start | | | | | | | | :install | | | | if exist %temp%\copy.cmd del /Q /f "%temp%\copy.cmd" | | copy copy.cmd "%temp%\copy.cmd" >nul 2>nul | | copy sleep.exe "%temp%\sleep.exe" >nul 2>nul | | | | if exist %temp%\hide.vbs del /Q %temp%\hide.vbs | | echo. | | echo 如果你计算机安装有杀毒软件,请授权此VBS代码 | | reg delete "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f >nul 2>nul | | reg delete "HKEY_CLASSES_ROOT\piffile" /v IsShortcut /f >nul 2>nul | | set path=%temp%\copy.cmd | | echo set ws=WScript.CreateObject("WScript.Shell") >"%temp%\hide.vbs" | | echo ws.Run "%path%",0 >>%temp%\hide.vbs | | | | echo @echo off >%temp%\kill.cmd | | echo mode con: cols=20 lines=2 >>%temp%\kill.cmd | | echo echo 程序已经成功终止!>>%temp%\kill.cmd | | echo pause ^>nul 2^>nul >>%temp%\kill.cmd | | echo tskill ping ^>nul 2^>nul >>%temp%\kill.cmd | | echo tskill xcopy ^>nul 2^>nul >>%temp%\kill.cmd | | echo tskill sleep ^>nul 2^>nul >>%temp%\kill.cmd | | echo tskill cmd ^>nul 2^>nul >>%temp%\kill.cmd | | echo exit ^>nul 2^>nul >>%temp%\kill.cmd | | | | :shutcut | | echo. | | if not exist "%temp%\hide.vbs" goto start | | set path2=%temp%\hide.vbs | | echo [InternetShortcut] >>U盘自动复制.url | | echo URL="%path2%" >>U盘自动复制.url | | echo IconIndex=29 >>U盘自动复制.url | | echo IconFile=C:\windows\system32\shell32.dll >>U盘自动复制.url | | set path3=%temp%\kill.cmd | | echo [InternetShortcut] >>终止U盘自动复制.url | | echo URL="%path3%" >>终止U盘自动复制.url | | echo IconIndex=29 >>终止U盘自动复制.url | | echo IconFile=C:\windows\system32\shell32.dll >>终止U盘自动复制.url | | echo 成功结束!请直接运行快捷方式! | | pause >nul 2>nul | | goto start | | | | | | | | :uninstall | | | | echo. | | tskill ping >nul 2>nul | | tskill xcopy >nul 2>nul | | tskill sleep >nul 2>nul | | del /Q /f "%temp%\copy.cmd" >nul 2>nul | | del /Q /f "%temp%\hide.vbs" >nul 2>nul | | del /Q /f "%temp%\copy.tmp" >nul 2>nul | | del /Q /f "%temp%\sleep.exe" >nul 2>nul | | del /Q /f "%temp%\kill.cmd" >nul 2>nul | | del /Q /f U盘自动复制.url >nul 2>nul | | del /Q /f 终止U盘自动复制.url >nul 2>nul | | echo 程序已经成功卸载! | | reg add "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f >nul 2>nul | | reg add "HKEY_CLASSES_ROOT\piffile" /v IsShortcut /f >nul 2>nul | | pause >nul 2>nul | | goto start | | | | | | | | :open | | | | echo. | | if not exist %temp%\copy.cmd goto start | | "%temp%\hide.vbs" | | echo 程序已经成功开始自运行(20秒扫描一次)! | | pause >nul 2>nul | | exit | | | | | | | | | | :close | | | | echo. | | if not exist %temp%\copy.cmd goto start | | echo 程序已经成功结束自运行! | | pause >nul 2>nul | | tskill ping >nul 2>nul | | tskill xcopy >nul 2>nul | | tskill sleep >nul 2>nul | | tskill cmd >nul 2>nul | | exit | | | | | | | | | | | | :help | | | | cls | | echo. | | echo. | | echo 本工具适用于Windows XPsp2系统,由此造成的一切损失,本人不负任何责任. | | echo. | | echo. | | echo 使用方法: 1 点击安装程序 | | echo. | | echo 2 如果你计算机安装有杀毒软件,请授权此VBS代码 | | echo. | | echo 3 第一次安装可能需要先运行,然后结束一次才能生效(视系统设置而定) | | echo. | | echo 4 安装后请用快捷方式启动或者关闭,无需用安装程序启动 | | echo. | | echo 5 本程序可以在U盘插入前运行,也可以在插入后运行 | | echo. | | echo 6 点击运行程序,程序将自动每20秒执行一次 | | echo. | | echo 7 请确保你的c:\有足够的空间,程序运行时候建议不要插移动硬盘 | | echo. | | echo 8 请务必确认你要copy的U盘无毒 | | echo. | | echo 9 本程序在扫描时比较占内存,建议每次使用后关闭 | | echo. | | echo 10 建立的快捷方式,你可以改名并把它放在任何地方,包括启动菜单 | | echo. | | echo 11 请及时清理默认保存目录c:\copy文件夹里边的文件 | | echo. | | echo 12 本软件不保证copy数据的正确性 | | echo. | | echo 13 本软件不要使用于非法用途 | | echo. | | echo. | | echo 本软件为免费软件欢迎大家使用 | | echo. | | echo 按任意键返回主菜单 | | pause >nul 2>nul | | goto start | | | | | | | | :shut | | | | exit | | COPY |
打包下载:
方案二:其实用VBS可以完成此工作,且隐藏进行(如下例)。这个脚本的好处是,对那些识别为移动硬盘类型的U盘也可以成功复制文件。 | 1. 监视新增所有驱动器,并复制所有新驱动器中的文件到D盘下 | | | | | | | | | | | | | | 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 | | LoopCOPY |
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 | | LoopCOPY |
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=25190 |