2009-07-17 42 views
1

好吧,这是与不是编程有关我猜...如何从众多的版本目录复制到一个文件夹

我有一大堆散落在一套小有用控制台工具我写的项目,我想将它们全部转储到单个目录以使它们更简单。唯一的问题是,我已经将它们全部编译为Debug和Release模式。

鉴于我只希望在我的utilities目录的发布模式的版本,有什么开关可以让我指定我想从我的树结构中的所有可执行文件,但只能从发布文件夹中:

例子:

Projects\ 
    Project1\ 
    Bin\ 
     Debug\ 
     Project1.exe 
     Release\ 
     Project1.exe 
    Project2\ 

等等...

Utilities\ 
    Project1.exe 
    Project2.exe 
    Project3.exe 
    Project4.exe 
    ... 

等etc ...

我想这将是一个与XCopy - 但它似乎不允许我排除调试目录 - 或者说 - 只包括项目在我的发布目录。

任何想法?

回答

1

您可以将它限制为只发布以下内容的可执行文件。但是,我不相信只有使用xcopy才能实现扁平化的其他要求。要做的限制:

首先创建一个文件,如排除。TXT并把这个里面:

\Debug\ 

然后使用下面的命令:

xcopy /e /EXCLUDE:exclude.txt *.exe C:\target 

你可以,但是,完成你想要使用xxcopy(免费的非商业用途)的东西。阅读technical bulletin #16了解扁平功能的说明。

如果在技术公告中的说法是正确的,那么就已经证实压扁不能与XCOPY单独完成。

下面的命令将做的正是你想用什么XXCOPY:

xxcopy /sgfo /X:*\Debug\* .\Projects\*.exe .\Utilities 

我建议你阅读技术公告,但是,因为它给出了扁平化更加复杂的选择。我选择了上面最基本的一个。

0

对不起,我还没有尝试过,但你不应该使用:

XCOPY发布的* .exe d:\目的地/秒

目前我在我的Mac所以,我不能真正检查是肯定的。

+0

/S开关创建树结构的副本,我想将其压扁到一个单独的目录 – BenAlabaster 2009-07-17 17:44:39

+0

,不会这个副本中的所有文件名为发布的* .exe,而不是从一个名为发行文件夹内? – BenAlabaster 2009-07-17 17:45:51

0

这可能无法帮助您将它们全部集中在一个地方,但是今后您会考虑在Visual Studio中为项目添加后构建事件(我假设您正在基于目录名称使用它)

XCOPY/Y/I/E “$(TARGETDIR)\ $(TargetFileName)” “C:\ somedirectory \ $(TargetFileName)”

0

OK,这是可能不会因为你的工作你似乎在一台Windows机器上。
无论如何,这是逻辑。

# From the base directory 
mkdir Utilities 
find . -type f | grep -w Release > utils.txt 
for f in $(<utils.txt); do cp $f Utilities/; done 

您可以findcp线合并成一个,我分裂他们的可读性。

要在Windows机器上执行此操作,您需要使用Cygwin或某些此类Unix Utilities。
也许在Windows外壳中有工具可以做到这一点...

0

这可能会帮助你开始:

C:\>for %i in (*) do dir "%~dpi\*.exe" 

用于dir命令作为改性剂对我,〜DP中使用(*)发现一切的驱动器和路径。如果我在包含多个可执行文件的子文件夹的文件夹中运行上述文件,我会得到每个文件夹中所有可执行文件的dir列表。

你应该能够修改添加“\ BIN \发布\”继〜dpi的部分,并更改目录到XCOPY。一点实验应该会让它变得很容易。

要在这两个地方一个批处理文件,改变“%”为“%%”上面使用的语句。

相关问题