楼 主
[已解决]带文件夹相对路径复制指定的N个文件
发表于 2008-04-11 17:05 · 中国 湖北 武汉 电信
中级用户
★★
积分 245 发帖 103 注册 2006-06-30 00:00 20年会员 UID 57801 性别 男
状态 离线
大家好!
偶现在做一个操作系统配置的文件备份批处理,想达到的效果是:把批处理文件放在任何一个文件夹内,并运行它后,则它按批处理文件里的文件路径清单复制到当前文件夹,并且是带原文件路径的。
===============
@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 楼
发表于 2008-04-11 17:18 · 中国 浙江 嘉兴 平湖市 电信
初级用户
★★
积分 157 发帖 67 注册 2007-05-13 11:03 19年会员 UID 88378 性别 男
状态 离线
这个简单,下面这句就满足你要求了。
xcopy /d/r/y/e/h %cd% E:\bak\
第 3 楼
发表于 2008-04-11 17:24 · 中国 湖北 武汉 电信
中级用户
★★
积分 245 发帖 103 注册 2006-06-30 00:00 20年会员 UID 57801 性别 男
状态 离线
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 楼
发表于 2008-04-12 12:28 · 中国 湖北 武汉 电信
中级用户
★★
积分 245 发帖 103 注册 2006-06-30 00:00 20年会员 UID 57801 性别 男
状态 离线
只是感觉这样的功能要用FOR加上XCOPY来实现,但还没有头绪,请大大指教!
第 5 楼
自己测试吧:
发表于 2008-04-12 12:40 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 18年会员 UID 112398 性别 男
状态 离线
@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%© %b% %%i%b:~2%© %c% %%i%c:~2%
[ Last edited by zw19750516 on 2008-4-12 at 12:43 PM ]
批处理之家新域名:www.bathome.net
第 6 楼
发表于 2008-04-12 15:15 · 中国 湖北 武汉 电信
中级用户
★★
积分 245 发帖 103 注册 2006-06-30 00:00 20年会员 UID 57801 性别 男
状态 离线
@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 楼
发表于 2008-04-12 15:37 · 中国 北京 华为云
银牌会员
★★★
积分 1,436 发帖 739 注册 2007-10-11 17:44 18年会员 UID 99469 性别 男
状态 离线
@echo off
for /f "tokens=*" %%i in ('more +7 "%~0"') do (
echo f|xcopy /e/q "%%i" "%cd%%%~pnxi">nul
)
pause
goto :eof
c:\IBM\123\456\789.nsf
c:\IBM\abc\cd.id
c:\Lotus\abc\cd.js
[
Last edited by abcd on 2008-4-12 at 03:38 PM ]
第 8 楼
发表于 2008-04-14 11:13 · 中国 湖北 武汉 电信
中级用户
★★
积分 245 发帖 103 注册 2006-06-30 00:00 20年会员 UID 57801 性别 男
状态 离线
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 楼
修改如下:
发表于 2008-04-14 12:48 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 18年会员 UID 112398 性别 男
状态 离线
@echo off
set a=c:\IBM&set b=c:\IBM&set c=c:\Lotus
for /f "delims=" %%i in ('cd') do xcopy /e %a% %%i%a:~2%\&xcopy /e %b% %%i%b:~2%\&xcopy /e %c% %%i%c:~2%\
[
Last edited by zw19750516 on 2008-4-14 at 01:18 PM ]
批处理之家新域名:www.bathome.net
第 10 楼
发表于 2008-04-14 13:35 · 中国 湖北 武汉 电信
中级用户
★★
积分 245 发帖 103 注册 2006-06-30 00:00 20年会员 UID 57801 性别 男
状态 离线
Originally posted by zw19750516 at 2008-4-14 12:48:
@echo off
set a=c:\IBM&set b=c:\IBM&set c=c:\Lotus
for /f "delims=" %%i in ('cd') do xcopy /e %a% %%i%a:~2%\&xcopy /e %b% %%i%b:~2%\&xcopy /e %c% %%i%c:~2%\ ...
此段代码没有指定源文件,如何复制?
把上面改为set a=c:\IBM\456\78j9.txt 则只复制这文件到当前目录,还是没有原路径层级文件夹
[
Last edited by flying008 on 2008-4-14 at 01:43 PM ]
第 11 楼
发表于 2008-04-14 15:05 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 18年会员 UID 112398 性别 男
状态 离线
xcopy /e命令是指复制文件夹里所有的内容啊(包括空文件夹),你测试了没有啊?
批处理之家新域名:www.bathome.net
第 12 楼
发表于 2008-04-14 15:31 · 中国 广西 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335 发帖 574 注册 2007-11-27 12:50 18年会员 UID 103929 性别 男 来自 广西
状态 离线
没有比这更笨的方法了,但一定能实现(目录级数如果不一样,请作相应改变):
@echo off
set aa=c:\IBM\123\456\789.nsf
set ab=c:\IBM\abc\cd.id
set ac=c:\Lotus\abc\cd.js
set path=%cd%
for /f "tokens=2-4 delims=\" %%a in ("%aa%") do (
md %%a&cd %%a&&md %%b&cd %%b&&md %%c&cd %%c
copy /y "%aa%"
)
cd %path%
for /f "tokens=2,3 delims=\" %%i in ("%ab%") do (
md %%i&cd %%i&&md %%j&cd %%j
copy /y "%ab%"
)
cd %path%
for /f "tokens=2,3 delims=\" %%m in ("%ac%") do (
md %%m&cd %%m&&md %%n&cd %%n
copy /y "%ac%"
)
pause
第 13 楼
发表于 2008-04-14 17:25 · 中国 湖北 武汉 电信
中级用户
★★
积分 245 发帖 103 注册 2006-06-30 00:00 20年会员 UID 57801 性别 男
状态 离线
Originally posted by zw19750516 at 2008-4-14 15:05:
xcopy /e命令是指复制文件夹里所有的内容啊(包括空文件夹),你测试了没有啊?
谢谢大大! 但偶的原文件路径比较深,而且系统文件非常多,像这样复制文件夹就带来了不需要的文件,不是偶想的指定文件的结果。谢谢……
第 14 楼
发表于 2008-04-14 20:00 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 18年会员 UID 112398 性别 男
状态 离线
那只有先创建空文件夹了,代码也会多很多。
批处理之家新域名:www.bathome.net
第 15 楼
发表于 2008-04-15 11:55 · 中国 台湾 中华电信(HiNet)数据中心
初级用户
★
积分 109 发帖 30 注册 2007-09-05 14:27 18年会员 UID 96621 性别 男
状态 离线
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
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正