中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 13:23
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么根据txt中文件路径建立文件夹并复制文件 查看 819 回复 3
楼 主 怎么根据txt中文件路径建立文件夹并复制文件 发表于 2007-11-14 09:04 ·  中国 广东 东莞 电信
初级用户
包身工
积分 74
发帖 20
注册 2007-11-07 15:52
18年会员
UID 101987
性别 男
来自 广东 东莞
状态 离线
文本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!!!
2 发表于 2007-11-14 10:45 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
xcopy可以复制目录树的
3 发表于 2007-11-14 12:54 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
假设文件是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 ]
第一高手 第二高手

4 发表于 2007-11-17 08:16 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
这样
当只有一级父目录时,就只要这一级
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
致精致简!
论坛跳转: