标题: 光盘复制程序如何搞啊?
[打印本页]
作者: tuesposo
时间: 2007-1-11 21:59
标题: 光盘复制程序如何搞啊?
1.插入光盘后,运行此程序,能把光盘上所有东西拷贝进硬盘上的1个路径
2.自动检查这个路径内新拷贝的东西,把*.bak文件都删掉
3.产生1个txt文件或网页文件里边记录刚刚拷贝东西有多少容量(精确到Mb),共多少个文件,如果有个象树型结构一样的东西显示里边内容东西那就更好了
谢谢哪位高手兄弟帮帮忙啊
Last edited by namejm on 2007-1-11 at 05:03 PM ]
作者: ccwan
时间: 2007-1-12 01:41
我的光驱为 I ,文件复制到 h:\5 下
代码如下:
@echo off
md h:\5
xcopy/s/e/q i:\*.* h:\5>nul&cd/d h:\5
if exist *.bak del *.bak
for /f "tokens=1-4 delims= " %%i in ('dir/s ^|find "文件"') do set a=%%i&set b=%%j&(if not "%%k"=="" set/a size=%%k/1048576)
echo %a%%b% %size%MB>c:\1.txt
for /f "skip=2 delims=" %%i in ('tree /f h:\5') do @echo. %%i>>c:\1.txt
start c:\1.txt
显示结果为:
8个文件 30MB
H:\5
│ DI-604.mbd
│ autorun.exe
│ autorun.inf
│
├─Acrobat
│ AdbeRdr60_enu_full.exe
│
├─Manual
│ di604_man_revx_ger_161204.pdf
│ di604_manual_205.pdf
│
└─Quick Installation Guide
di-604_manual_203_DE.pdf
di604_QIG_205.pdf
Last edited by ccwan on 2007-1-12 at 01:49 AM ]
作者: lxmxn
时间: 2007-1-12 01:54
兄的批处理不错啊,加分。
作者: tuesposo
时间: 2007-1-12 05:42
谢谢斑竹我会尽快改的
谢谢2楼兄,可是好象容量显示不正确,我从文件属性里看到是290MB,但是1.txtl里是304M为什么啊?
还有如果bak是隐藏文件能删吗
Last edited by tuesposo on 2007-1-11 at 04:45 PM ]
作者: ccwan
时间: 2007-1-12 05:53
容量本就是约数,不会太准,不然你试试改成 size=%%k/1049000 看行不行。
del加上参数就可以了,del/a/f/q 应该够用了。
作者: lotus516
时间: 2007-1-12 05:55
这个用来作索引还不错!!
作者: tuesposo
时间: 2007-1-12 05:55
谢谢哦,还有能不要叫1.txt吗?txt文件名就是拷贝当天的时间如2006-05-13.txt,如果能精确到时间更好了2006-05-13(16:52).txt,能有这个功能吗?
作者: ccwan
时间: 2007-1-12 06:04
关于建立以日期、时间为名称的文件,坛子里有很多法子了,你可以搜一下。
作者: tuesposo
时间: 2007-1-12 21:44
哥哥时间问题搞好了,就是容量如何显示呢?就是说点鼠标右键出来的文件容量,而不是从字节转出来的文件容量啊
作者: ccwan
时间: 2007-1-12 21:55
Originally posted by tuesposo at 2007-1-12 21:44:
哥哥时间问题搞好了,就是容量如何显示呢?就是说点鼠标右键出来的文件容量,而不是从字节转出来的文件容量啊
这句话挺难读懂。
其实右键属性中的容量也是以字节为基本单位的,所谓的MB同样是从字节运算而来。
作者: tuesposo
时间: 2007-1-12 22:09
哥哥我在程序最后面加了个pause,程序不会自动关闭,为什么出现下面的内容啊:
无效数字。数字常数只能是十进制(17),十六进制(0x11)或八进制(021)是哪行出问题了啊?
作者: ccwan
时间: 2007-1-12 22:36
我想是因为浮点运算问题吧。但并不影响使用和显示,可以屏蔽掉。
set a=%%i&set b=%%j&(if not "%%k"=="" set/a size=%%k/1048576)
上面这句改成这样:
set a=%%i&set b=%%j&(if not "%%k"=="" set/a size=%%k/1048576) 2>nul
作者: tuesposo
时间: 2007-1-12 22:48
嘎嘎,问题解决了,:P:D:lol:谢谢哦,但还有个小问题,我拿字节数除1048576,除出来2者结果也不对啊,相差10多M,会不会是字节数不对啊
作者: ccwan
时间: 2007-1-12 22:51
那你的文件到底多少字节呢?
有没有试过我在5楼说的用1049000试试?
试过后把结果贴出来看看好吗?
作者: tuesposo
时间: 2007-1-12 22:56
都试过啊
文件属性里显示是304,880,027字节,大小是290M,用304,880,027除
1048576是290.756。
但是1.txt里是304Mb,文件个数和文件属性里的个数一样都是879个啊
作者: ccwan
时间: 2007-1-12 23:26
这个我还真是不太明白,希望有高手可以解释一下。
另外,限于批处理正确处理数字最大值为65536*65536/2-1,即为2147483647,
所以当文件太大时,这个批处理也是不能正确显示的。
作者: tuesposo
时间: 2007-1-12 23:28
小容量文件好象对的,大容量文件就稍微差了点,还是谢谢你
作者: ccwan
时间: 2007-1-12 23:45
原因找到了,经9527提醒,原来是因为忘记用参数/-c了,它用来去掉分隔符,所以代码改为
@echo off
md h:\5
xcopy/s/e/q i:\*.* h:\5>nul&cd/d h:\5
if exist *.bak del *.bak
for /f "tokens=1-4 delims= " %%i in ('dir/a/s/-c ^|find "文件"') do set a=%%i&set b=%%j&(if not "%%k"=="" set/a size=%%k/1048576)
echo %a%%b% %size%MB>c:\1.txt
for /f "skip=2 delims=" %%i in ('tree /f h:\5') do @echo. %%i>>c:\1.txt
start c:\1.txt
作者: tuesposo
时间: 2007-1-13 00:06
现在显示正确了,超感谢ccwan和9527二位仁兄a