中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 19:22
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教 copy文件时候,排除特殊目录和文件
楼 主 请教 copy文件时候,排除特殊目录和文件 发表于 2008-09-04 16:12 ·  中国 广东 广州 荔湾区 电信
新手上路
积分 16
发帖 7
注册 2008-09-04 15:42
UID 124781
性别 男
状态 离线
--output
--projects
--project1
--bin
--debug
project1.dll
project1.xml
--release
project1.dll
project1.xml
--obj
--debug
project1.dll
project1.xml
project1.pda
--release
project1.dll
project1.xml
--project2
--bin
--debug
project1.dll
project2.dll
project2.xml
--obj
--debug
project1.dll
project1.xml
project1.pda
..............
output文件夹 和projects文件夹是同级的,projects文件夹里面有多个project文件,每一个project文件里面都有一个bin文件和obj文件,bin文件夹和obj文件夹里面有debug和release文件夹,现在我想把bin文件夹里面的debug文件夹的东西的拷贝到output里面,可是不要obj里面的,而且,因为project2里面也有project1.dll这个文件,我需要跳过这个文件,这个批处理对我来说,太难的。请各位帮忙一下。

[ Last edited by iipiip on 2008-9-4 at 04:14 PM ]
2 发表于 2008-09-04 16:17 ·  中国 广东 广州 越秀区 电信
新手上路
积分 16
发帖 7
注册 2008-09-04 15:42
UID 124781
性别 男
状态 离线
应该是 bin文件夹里面的debug文件夹的*.dll,*.xml文件的拷贝到output文件夹里面
3 发表于 2008-09-04 16:32 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
是不是这个意思?
@echo off
set SrcDir=C:\test\projects
set DstDir=C:\test\output
for /f "tokens=*" %%a in ('dir /s /b /a-d "%SrcDir%"^|findstr /i "\\bin\\"') do (
echo n|copy /-y "%%a" "%DstDir%"
)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
iipiip +1 2008-09-04 16:55
4 发表于 2008-09-04 16:33 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
汗水,需求变了。
@echo off
set SrcDir=C:\test\projects
set DstDir=C:\test\output
for /f "tokens=*" %%a in ('dir /s /b /a-d "%SrcDir%"^|findstr /i "\\bin\\debug\\"') do (
echo n|copy /-y "%%a" "%DstDir%"
)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
iipiip +1 2008-09-04 16:55
5 发表于 2008-09-04 16:40 ·  中国 广东 广州 越秀区 电信
新手上路
积分 16
发帖 7
注册 2008-09-04 15:42
UID 124781
性别 男
状态 离线
太感谢了。。。。。。。。。。。。。。。。。。。
6 发表于 2008-09-04 16:44 ·  中国 广东 广州 越秀区 电信
新手上路
积分 16
发帖 7
注册 2008-09-04 15:42
UID 124781
性别 男
状态 离线
可是我还有一个问题,现在project2是在project1后面,如果是project2在project1前面,是不是project1里面的那个dll没有覆盖project2的?我的想法是又project1文件夹出来的,其他文件夹出来,应该是不覆盖这个的。这个能实现么?再次麻烦HATle

这些dll名称肯定是project的名称,
7 发表于 2008-09-04 16:49 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
dir的结果默认应该是升序排列的,project1自动排在project2前面。
echo n就是为了后面的不覆盖前面的。
8 发表于 2008-09-04 16:52 ·  中国 广东 广州 越秀区 电信
新手上路
积分 16
发帖 7
注册 2008-09-04 15:42
UID 124781
性别 男
状态 离线
呃。。。问题是,可能project1不叫project1.。。我这里是为了方便这样写的。他可能是wpfproject,而project2可能是sileverlightproejct。。。。
9 发表于 2008-09-04 16:55 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
字符串会按照ASCII码排序
wpfproject会排在sileverlightproejct后面
你是说想让wpfproject排在sileverlightproejct前面?
10 发表于 2008-09-04 17:03 ·  中国 广东 广州 荔湾区 电信
新手上路
积分 16
发帖 7
注册 2008-09-04 15:42
UID 124781
性别 男
状态 离线
呃。。这样说吧,还是上面那个文件表结构,只是project1下面的debug文件夹中有project2.dll
project1
--bin
--debug
project1.dll
project1.xml
project2.dll
--project2
--bin
--debug
project2.dll
project2.xml
我的意思是,copy的时候,project1下面的debug文件夹的内容肯定copy先,那么output文件夹里面project2.dll,然后project2的后面copy的,那么就不会覆盖project2.dll。但是我想我需要的是,project2里面的project2.dll要覆盖output里面的project2.dll。因为project2.dll是project2文件夹产生的。不知道你明白没有~。~ 再次感谢你的帮忙。谢谢
11 发表于 2008-09-04 17:27 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
@echo off
setlocal enabledelayedexpansion
set SrcDir=C:\test\projects
set DstDir=C:\test\output
for /f "tokens=*" %%a in ('dir /s /b /a-d "%SrcDir%"^|findstr /i "\\bin\\debug\\"') do (
if exist "%DstDir%\%%~nxa" (
echo "%%~dpa"|findstr "%%~na">nul 2>nul
if !errorlevel! equ 0 (
copy /y "%%a" "%DstDir%"
)
) else (
copy "%%a" "%DstDir%"
)
)
12 发表于 2008-09-04 17:28 ·  中国 广东 广州 荔湾区 电信
新手上路
积分 16
发帖 7
注册 2008-09-04 15:42
UID 124781
性别 男
状态 离线
感谢中。。。。。。。。。。
HAT超级号人
13 发表于 2008-09-05 22:13 ·  中国 北京 海淀区 联通
初级用户
积分 22
发帖 15
注册 2008-06-23 05:01
UID 120728
性别 男
状态 离线
同感,现代雷锋
一起蹲坑
14 发表于 2008-09-06 01:59 ·  中国 广东 东莞 电信
初级用户
积分 98
发帖 45
注册 2008-08-30 01:29
UID 124535
性别 男
状态 离线
有点复杂
论坛跳转: