中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教 copy文件时候,排除特殊目录和文件
作者:
标题: 请教 copy文件时候,排除特殊目录和文件 上一主题 | 下一主题
iipiip
新手上路





积分 16
发帖 7
注册 2008-9-4
状态 离线
『楼 主』:  请教 copy文件时候,排除特殊目录和文件

--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 ]

2008-9-4 16:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iipiip
新手上路





积分 16
发帖 7
注册 2008-9-4
状态 离线
『第 2 楼』:  

应该是 bin文件夹里面的debug文件夹的*.dll,*.xml文件的拷贝到output文件夹里面

2008-9-4 16:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  

是不是这个意思?
@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-9-4 16:55




2008-9-4 16:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

汗水,需求变了。
@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-9-4 16:55




2008-9-4 16:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
iipiip
新手上路





积分 16
发帖 7
注册 2008-9-4
状态 离线
『第 5 楼』:  

太感谢了。。。。。。。。。。。。。。。。。。。

2008-9-4 16:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iipiip
新手上路





积分 16
发帖 7
注册 2008-9-4
状态 离线
『第 6 楼』:  

可是我还有一个问题,现在project2是在project1后面,如果是project2在project1前面,是不是project1里面的那个dll没有覆盖project2的?我的想法是又project1文件夹出来的,其他文件夹出来,应该是不覆盖这个的。这个能实现么?再次麻烦HATle

   这些dll名称肯定是project的名称,

2008-9-4 16:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 7 楼』:  

dir的结果默认应该是升序排列的,project1自动排在project2前面。
echo n就是为了后面的不覆盖前面的。



2008-9-4 16:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
iipiip
新手上路





积分 16
发帖 7
注册 2008-9-4
状态 离线
『第 8 楼』:  

呃。。。问题是,可能project1不叫project1.。。我这里是为了方便这样写的。他可能是wpfproject,而project2可能是sileverlightproejct。。。。

2008-9-4 16:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 9 楼』:  

字符串会按照ASCII码排序
wpfproject会排在sileverlightproejct后面
你是说想让wpfproject排在sileverlightproejct前面?



2008-9-4 16:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
iipiip
新手上路





积分 16
发帖 7
注册 2008-9-4
状态 离线
『第 10 楼』:  

呃。。这样说吧,还是上面那个文件表结构,只是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文件夹产生的。不知道你明白没有~。~ 再次感谢你的帮忙。谢谢

2008-9-4 17:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 11 楼』:  


@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%"
  )
)




2008-9-4 17:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
iipiip
新手上路





积分 16
发帖 7
注册 2008-9-4
状态 离线
『第 12 楼』:  

感谢中。。。。。。。。。。
HAT超级号人

2008-9-4 17:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sparklt
初级用户




积分 22
发帖 15
注册 2008-6-23
状态 离线
『第 13 楼』:  

同感,现代雷锋



一起蹲坑
2008-9-5 22:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
406317577
初级用户





积分 98
发帖 45
注册 2008-8-30
状态 离线
『第 14 楼』:  

有点复杂

2008-9-6 01:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: