中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 04:59
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]带文件夹相对路径复制指定的N个文件
可打印版本  2,254 / 15
第1楼 flying008 发表于 2008-04-11 17:05
中级用户 发帖 103 积分 245
[已解决]带文件夹相对路径复制指定的N个文件
大家好!

偶现在做一个操作系统配置的文件备份批处理,想达到的效果是:把批处理文件放在任何一个文件夹内,并运行它后,则它按批处理文件里的文件路径清单复制到当前文件夹,并且是带原文件路径的。

===============
@echo off
@eho c:\IBM\123\456\789.nsf
@eho c:\IBM\abc\cd.id
@eho c:\Lotus\abc\cd.js
:这一行代码是关键,就是COPY上面两个文件到当前文件夹,并且这2个文件是复制到当前文件夹+原路径下的目录内。 ???
exit
================
示例:
在E盘根目录下的bak文件夹内运行这个批处理后,则会产生如下效果:
E:\bak\IBM\123\456\789.nsf
E:\bak\IBM\abc\cd.id
E:\bak\Lotus\abc\cd.js
在F盘根目录下的load文件夹内运行这个批处理后,则会产生如下效果:
F:\load\IBM\123\456\789.nsf
F:\load\IBM\abc\cd.id
F:\load\Lotus\abc\cd.js


请教各位如何写批处理?bat或vbs都可以,谢谢!


[ Last edited by flying008 on 2008-4-15 at 12:35 PM ]
第2楼 tvzml 发表于 2008-04-11 17:18
初级用户 发帖 67 积分 157
这个简单,下面这句就满足你要求了。

xcopy /d/r/y/e/h %cd% E:\bak\
第3楼 flying008 发表于 2008-04-11 17:24
中级用户 发帖 103 积分 245
Originally posted by tvzml at 2008-4-11 17:18:
这个简单,下面这句就满足你要求了。

xcopy /d/r/y/e/h %cd% E:\bak\


这句偶还没试效果,不过要是放在F盘的up文件夹运行呢?呵呵……目的是生成
当前文件夹路径+原路径+文件的,
COPY上面N个文件到当前文件夹,并且这N个文件是复制到当前文件夹+原路径下的目录内
所以你把E:\bak\作为当前文件夹路径写入批处理中是不合适的,不过还是要谢谢你的帮助!


[ Last edited by flying008 on 2008-4-11 at 05:25 PM ]
第4楼 flying008 发表于 2008-04-12 12:28
中级用户 发帖 103 积分 245
只是感觉这样的功能要用FOR加上XCOPY来实现,但还没有头绪,请大大指教!
第5楼 bat-zw 发表于 2008-04-12 12:40
金牌会员 发帖 1,276 积分 3,105
自己测试吧:
@echo off
set a=c:\IBM\123\456\789.nsf&set b=c:\IBM\abc\cd.id&set c=c:\Lotus\abc\cd.js
for /f "delims=" %%i in ('cd') do copy %a% %%i%a:~2%&copy %b% %%i%b:~2%&copy %c% %%i%c:~2%

[ Last edited by zw19750516 on 2008-4-12 at 12:43 PM ]
第6楼 flying008 发表于 2008-04-12 15:15
中级用户 发帖 103 积分 245
@echo off
set a=C:\Documents and Settings\Administrator\Application Data\Microsoft\AddIns\polynimials.chm
for /f "delims=" %%i in ('cd') do copy %a% %%i%a:~2%


经过测试,只能复制磁盘根目录下文件到当前文件夹下,这样的功能单独用COPY命令就可以做到了。
如果是某文件夹下的文件或多级子文件夹下的文件,无论是否路径有空格,提示系统找不到指定的文件! 且不能生成所需要的多级文件目录.
革命尚未成功,还请大大指点啊!谢谢……


[ Last edited by flying008 on 2008-4-12 at 03:25 PM ]
第7楼 abcd 发表于 2008-04-12 15:37
银牌会员 发帖 739 积分 1,436


[ Last edited by abcd on 2008-4-12 at 03:38 PM ]
第8楼 flying008 发表于 2008-04-14 11:13
中级用户 发帖 103 积分 245
abcd大大,你好!

运行这个bat时提示内部错误,请问如何修改后才能用这个bat来复制下面3个文件?
c:\IBM\123\456\789.nsf
c:\IBM\abc\cd.id
c:\Lotus\abc\cd.js


[ Last edited by flying008 on 2008-4-14 at 11:15 AM ]
第9楼 bat-zw 发表于 2008-04-14 12:48
金牌会员 发帖 1,276 积分 3,105
修改如下:


[ Last edited by zw19750516 on 2008-4-14 at 01:18 PM ]
第10楼 flying008 发表于 2008-04-14 13:35
中级用户 发帖 103 积分 245
Originally posted by zw19750516 at 2008-4-14 12:48:
...


此段代码没有指定源文件,如何复制?
把上面改为set a=c:\IBM\456\78j9.txt 则只复制这文件到当前目录,还是没有原路径层级文件夹


[ Last edited by flying008 on 2008-4-14 at 01:43 PM ]
第11楼 bat-zw 发表于 2008-04-14 15:05
金牌会员 发帖 1,276 积分 3,105
xcopy /e命令是指复制文件夹里所有的内容啊(包括空文件夹),你测试了没有啊?
第12楼 moniuming 发表于 2008-04-14 15:31
银牌会员 发帖 574 积分 1,335 来自 广西
没有比这更笨的方法了,但一定能实现(目录级数如果不一样,请作相应改变):
第13楼 flying008 发表于 2008-04-14 17:25
中级用户 发帖 103 积分 245
Originally posted by zw19750516 at 2008-4-14 15:05:
xcopy /e命令是指复制文件夹里所有的内容啊(包括空文件夹),你测试了没有啊?


谢谢大大! 但偶的原文件路径比较深,而且系统文件非常多,像这样复制文件夹就带来了不需要的文件,不是偶想的指定文件的结果。谢谢……
第14楼 bat-zw 发表于 2008-04-14 20:00
金牌会员 发帖 1,276 积分 3,105
那只有先创建空文件夹了,代码也会多很多。
第15楼 mkd 发表于 2008-04-15 11:55
初级用户 发帖 30 积分 109
Originally posted by flying008 at 2008-4-14 11:13 AM:
abcd大大,你好!

运行这个bat时提示内部错误,请问如何修改后才能用这个bat来复制下面3个文件?
c:\IBM\123\456\789.nsf
c:\IBM\abc\cd.id
c:\Lotus ...


去除 /e
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023