Board logo

标题: 求助:判断U盘已插入再Copy硬盘的内容到U盘!在线等 [打印本页]

作者: dj0733     时间: 2007-2-2 07:26    标题: 求助:判断U盘已插入再Copy硬盘的内容到U盘!在线等

判断U盘已插入,然后删除U盘里的所有的内容,再Copy硬盘的内容到U盘!

达人们:

我要的是要显示,并且提示删除成功,复制成功!
先要把里面的东西删除,再COPY
要是检测到H:插入Copy 到H:提示H:拷贝成功
要是检测到G:插入Copy 到G:提示G:拷贝成功。
一次性来两个。。就两个全部提示。。
要是没有找U_DISK到就不Copy。。。也不提示。。

因为公司里做MP3,所以每个去CTRL+C 就太繁杂
用一个USB-HUB 来多少个弄多少个。

大侠们,帮帮忙。。。。

[ Last edited by dj0733 on 2007-2-1 at 06:29 PM ]
作者: dj0733     时间: 2007-2-2 07:29
最好是后台能运行。。。呵呵。。
还要搞一个计数器。。。

拷贝后提示
已经拷贝X个。。
作者: mygoldnet     时间: 2007-2-2 09:12
我来发一个,改别人的
@echo off
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  d:\mp3\*.* %yidong%\ /y
del d:\t.txt
echo mp3复制到%yidong%成功
存为g.bat

到控制面板手动加入g.bat到计划任务中,2分钟执行一次!
作者: anqing     时间: 2007-2-2 11:57
echo off
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 delims=:" %%i in ('findstr /i "可移动驱动器" d:\t.txt') do @set yidong=%%i&del "%%i:\*.* /s/q/f"
copy  d:\mp3\*.* %yidong%:\ /y


del d:\t.txt
dir %yidong%:\>d:\11.txt
for /f "tokens=1" %%b in ('findstr /i "个文件" d:\11.txt') do (echo 拷贝%%b个文件到u盘!)

请你再试,在线等!

[ Last edited by anqing on 2007-2-2 at 10:32 PM ]
作者: zh159     时间: 2007-2-2 13:46
可以将:

if errorlevel==1 goto end
if errorlevel==0 goto cop
:end
exit
:cop

直接改为:

if errorlevel==1 exit
作者: dj0733     时间: 2007-2-2 22:02
谢楼上几位...

3楼的好象没有删除....

4楼的测试ing....
好象不行....

执行到:if errorlevel==0 goto cop
报错:此时不应有 “delims=:”
下一句:
for /f "tokens=1" "delims=:" %%i in ('findstr /i "可移动驱动器" d:\t.txt') do @set yidong=%%i&del "%%i:\*.* /s/q/f"

停止不动
作者: anqing     时间: 2007-2-2 22:33
4楼已改,你试试吧
作者: dj0733     时间: 2007-2-3 00:30
测试了一下...我在MP3里没有放卡.

C:\>echo off
j: - 可移动驱动器
k: - 可移动驱动器
d:\copy\t.txt
设备未就绪。
已复制         0 个文件。

J:是MP3  K: 是MP3内置的读卡器.

如果我K:没有放卡就报错...

那就放卡吧,,,单步执行..
C:\>for %i in (c d e f g h i j k) do @fsutil fsinfo drivetype %i: 1>>d:\t.txt

C:\>findstr /i "可移动驱动器" d:\t.txt
j: - 可移动驱动器
k: - 可移动驱动器

C:\>if errorlevel 1 goto end

C:\>if errorlevel 0 goto cop

C:\>for /F "tokens=1 delims=:" %i in ('findstr /i "可移动驱动器" d:\t.txt') do @set yidong=%i  & del "%i:\*.* /s/q/f"

C:\>copy  d:\copy\*.* k:\ /y
d:\copy\t.txt
d:\copy\邮件地址.pst
已复制         2 个文件。

C:\>del d:\t.txt

C:\>dir k:\ 1>d:\11.txt

C:\>for /F "tokens=1" %b in ('findstr /i "个文件" d:\11.txt') do (echo 拷贝%b个文件到u盘! )

C:\>(echo 拷贝4个文件到u盘! )
拷贝4个文件到u盘!

却不删除文件,,,也不执行目录拷贝....
再次感谢楼上的兄弟!
作者: anqing     时间: 2007-2-3 02:35
楼主的意思,我不太明白,你的mp3可以插卡,而插卡后,在我的电脑里,有两个盘符是吗?全是可移动的吗?
这样的mp3没有接触过
如果你不插卡的时候,上面的p还达不到,你的要求吗?
我有事,晚上回来看帖!
作者: dj0733     时间: 2007-2-3 03:28
真不好意思,,因为公司开发新项目....所以不知情不为怪

其实道理是一样的.我拿的是我的手机做试验!因为手机有两个盘符.
全是可移动的,有一个是读卡器的.

我可以不插卡.但是不插卡,也有两个盘符.当然这就有一个未准备.也就是会报错!
我插卡.可是不删除...而且,一CP 就全部都CP上去了~
两个存储器上全部都有~!

我把我的思维说一下吧,
拷贝到MP3本机:
首先,检测可移动磁盘.
然后,可移动B如果没有准备好..忽略,,
删除可移动A里的*.* XcopY 一下.
计数器+1
ECHO 已经成功拷贝到A  

最好是能够后台的.一插入就自动检测..检测到了就CP的那种..而且计数器是永驻内侟的那种..

==================
谢谢.
作者: dj0733     时间: 2007-2-3 06:39
顶上去.表沉了!问题还没有解决呢
作者: namejm     时间: 2007-2-3 06:54
  首先,用批处理做监控是要付出很大的代价的,常见的代价就是CPU占用高达100%;
  其次,用批处理中的 fsutil fsinfo drivetype 来判断分区的类型很容易出错,在我的电脑上,就从来没有正确地识别过移动盘,都是把移动盘当作本地的固定盘。
  最后,纯批处理没有控制是否后台运行的专用命令,虽然at可以做到定点监测+后台运行,但是,毕竟不是专门的命令,干起活来总是不太令人满意——我还没试过每分钟设置一个监测的时间点是个什么样的状况,每一秒钟又是何等场面,估计会因计划任务过多而把机子挂掉。

  以上三条,前两条条条致命。批处理的局限性太大了,还是换用其他工具来实现吧。
作者: dj0733     时间: 2007-2-3 07:04
那还是让我自己用那个,.del *.*  再XCOPY的批命令吧!
作者: anqing     时间: 2007-2-3 07:25
bat实现你的功能,确实cpu会付出最大的代价。
作者: 21yefeng     时间: 2007-2-3 20:13
学习当中!
作者: toudu     时间: 2007-3-15 05:59
讨论U盘自动复制的话题还真不少,学了不少东西,呵呵
作者: axi     时间: 2007-3-15 13:06
每逢看到有 for 命令的场合,我第一时间就是收集再学习。
作者: buddiyar     时间: 2010-2-20 21:43
支持12楼namejm的观点 呵呵
作者: rivch     时间: 2010-2-23 10:20
我是来学习的。太菜。。。