中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么根据txt中文件路径建立文件夹并复制文件
作者:
标题: 怎么根据txt中文件路径建立文件夹并复制文件 上一主题 | 下一主题
rokersong
初级用户

包身工


积分 74
发帖 20
注册 2007-11-7
来自 广东 东莞
状态 离线
『楼 主』:  怎么根据txt中文件路径建立文件夹并复制文件

文本makefiles.txt内容如下:
E:\Digit_Photo_Frame\makefiles.txt
E:\Digit_Photo_Frame\src_Lite-On_111207\src_Lite-On_111207\libIPLAY\libSrc\audio\MAKE\Makefile
E:\Digit_Photo_Frame\src_Lite-On_111207\src_Lite-On_111207\libIPLAY\libSrc\audio\MAKE\Makefile.bak
E:\Digit_Photo_Frame\src_Lite-On_111207\src_Lite-On_111207\libIPLAY\libSrc\Bios\MAKE\makefile
。。。。。
。。。
。。
-------------------------------
@echo off
for /f %%a in (makefiles.txt) do (echo %%a && pause && @copy %%a e:\digit_photo_frame\make   )

因为很多makefile文件,如果用上述for循环拷贝到一个文件夹make下会产生覆盖,

我的目的是在目标文件夹make下建立相应的父文件夹然后再按目录拷贝文件,比如:makefiles.txt中有一个路径是:E:\Digit_Photo_Frame\src_Lite-On_111207\src_Lite-On_111207\libIPLAY\libSrc\Bios\MAKE\makefile,我想在目标文件夹make里先建立Bios文件夹,再建立MAKE文件夹,最后把makefile文件拷贝到MAKE文件夹里面,不知道我的意思是不是够明确了,小弟后学末进,望赐教

[ Last edited by rokersong on 2007-11-14 at 09:06 AM ]



嘘§the genius is sleeping!!!
2007-11-14 09:04
查看资料  发送邮件  发短消息 网志  OICQ (42419713)  编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 2 楼』:  

xcopy可以复制目录树的

2007-11-14 10:45
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 3 楼』:  

假设文件是E:\Digit_Photo_Frame\src_Lite-On_111207\src_Lite-On_111207\libIPLAY\libSrc\Bios\MAKE\makefile
想复制到目标e:\digit_photo_frame\make\Bios\makefile
是这意思吗?
如果是,这个恐怕做不到。
如果E:\Digit_Photo_Frame\src_Lite-On_111207\src_Lite-On_111207\libIPLAY\libSrc是固定的还可以用for筛选出makefile文件父目录的父目录名

[ Last edited by fastslz on 2007-11-14 at 12:57 PM ]



第一高手    第二高手

2007-11-14 12:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 4 楼』:  

这样
当只有一级父目录时,就只要这一级
c:\Digit_Photo_Frame\makefiles.txt
Digit_Photo_Frame\
当有两级或两级以上的父目录时,就取文件的上两级
E:\Digit_Photo_Frame\src_Lite-On_111207\src_Lite-On_111207\libIPLAY\libSrc\Bios\MAKE\makefile.txt
Bios\MAKE\
当父目录是根目录时,就直接复制文件到make文件夹
E:\makefile.txt
make\
::
@echo off&set wjj=make
for /f "delims=" %%a in (a.txt) do (
  call :loop "%%~pa" "%%a"
)
pause&exit
:loop
setlocal
set /a n+=1
set num=%str%
for /f "tokens=%n%* delims=\" %%i in ("%~1") do (
  set str=%%i
  if not "%%j"=="" goto loop
)
set ok=%num%\%str%

if "%~1"=="\" set ok=%wjj%
if "%ok:~0,1%"=="\" set ok=%ok:~1%
md "%ok%">2nul
copy/y "%~2" "%wjj%\%ok%\%~nx2"
endlocal
goto :eof




致精致简!
2007-11-17 08:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: