2009-07-17 20 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。一點實驗應該會讓它變得很容易。

要在這兩個地方一個批處理文件,改變「%」爲「%%」上面使用的語句。

相關問題