标题: 请教 copy文件时候,排除特殊目录和文件
[打印本页]
作者: iipiip
时间: 2008-9-4 16:12
标题: 请教 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 ]
作者: iipiip
时间: 2008-9-4 16:17
应该是 bin文件夹里面的debug文件夹的*.dll,*.xml文件的拷贝到output文件夹里面
作者: HAT
时间: 2008-9-4 16:32
是不是这个意思?
@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%"
)
作者: HAT
时间: 2008-9-4 16:33
汗水,需求变了。
@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%"
)
作者: iipiip
时间: 2008-9-4 16:40
太感谢了。。。。。。。。。。。。。。。。。。。
作者: iipiip
时间: 2008-9-4 16:44
可是我还有一个问题,现在project2是在project1后面,如果是project2在project1前面,是不是project1里面的那个dll没有覆盖project2的?我的想法是又project1文件夹出来的,其他文件夹出来,应该是不覆盖这个的。这个能实现么?再次麻烦HATle
这些dll名称肯定是project的名称,
作者: HAT
时间: 2008-9-4 16:49
dir的结果默认应该是升序排列的,project1自动排在project2前面。
echo n就是为了后面的不覆盖前面的。
作者: iipiip
时间: 2008-9-4 16:52
呃。。。问题是,可能project1不叫project1.。。我这里是为了方便这样写的。他可能是wpfproject,而project2可能是sileverlightproejct。。。。
作者: HAT
时间: 2008-9-4 16:55
字符串会按照ASCII码排序
wpfproject会排在sileverlightproejct后面
你是说想让wpfproject排在sileverlightproejct前面?
作者: iipiip
时间: 2008-9-4 17:03
呃。。这样说吧,还是上面那个文件表结构,只是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文件夹产生的。不知道你明白没有~。~ 再次感谢你的帮忙。谢谢
作者: HAT
时间: 2008-9-4 17:27
@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%"
)
)
作者: iipiip
时间: 2008-9-4 17:28
感谢中。。。。。。。。。。
HAT超级号人
作者: sparklt
时间: 2008-9-5 22:13
同感,现代雷锋
作者: 406317577
时间: 2008-9-6 01:59
有点复杂