英吋 XNA

XNA – 備份資料時的清除工作

開始固定時間到學校教室去做專題後,程式碼的複製變得非常頻繁。
雖說硬碟不是裝不下,但一堆檔案
就是很惱人…
稍微研究了一些辦法來節省空間…

XNA佔空間的部分不外乎Bin底下Content裡面的.xnb們!
再來就是相對較小的編譯暫存檔(我這樣稱呼它的),以就是Obj資料夾裡的東西。
最後,如果有使用FBX檔,它會在同個資料夾底下產出對應的紋理資料夾。
例如有個ABC.FBX,當它被使用時,就會產出一個ABC.fbm的資料夾,裡面會有使用到的紋理。
當然,前提是你有勾選夾帶媒體檔囉~
OK~這是我目前推測可以刪除的檔案,那麼就著手清除吧!
當然,手動清除一定是最精準的,但每次都要做,不就煩死人了

最為簡單且C/P值最高的方式,就是直接使用VS的「清除」。

也就是「
清除方案」和「清除專案」,注意Debug和Release是個別清的。



另外一個方便的方式就是使用.bat作批次處理。
嘛~
雖然對它挺有興趣的,但都沒有特別去學,到現在還是只懂一些毛皮
使用批次處理會比內建清除來得徹底,而且不必開啟專案來清除~
這裡使用到的語法就只有rd(刪除目錄)、del(刪除檔案或目錄)和for(迴圈)。
我是把清除bat放在.sln同層的資料夾內。

rem .\專案名稱\bin
rem .\專案名稱\obj
rem .\專案名稱\Content\bin
rem .\專案名稱\Content\obj
rem for /r ".\專案名稱\Content\Model" %%i in (*.dds *.jpg *.png *.bmp) do (if exist "%%i" del "%%i")

@echo off
rd /s /q .\nRichTest\bin
rd /s /q .\nRichTest\obj
rd /s /q .\nRichTest\Content\bin
rd /s /q .\nRichTest\Content\obj
for /r ".\nRichTest\Content\Model" %%i in (*.dds *.jpg *.png *.bmp) do (if exist "%%i" del "%%i")

基本上,還是得強調,希望是你有一些bat的基本知識在使用。
有地方寫錯語法,可能會刪到不該刪的
不過,有再寫程式的,應該不難理解bat的語法用處~

上半部每行都使用 rem 開頭,等同於C#裡面的「//」,也就是註解用。

rd  – 刪除指定的目錄。
參數/s是用來刪除該資料夾底下(包括子資料夾)所有符合的檔案,如果有的話。
倘若沒有加上/s,那麼它只會清除該資料夾底下的所有檔案。
因為該資料夾還有其他檔案,所以就無法移除該資料夾。
參數/q是用來免除執行命令的確認手續,可以試著拿掉看看~

for
參數/r目前不知道幹啥的,沒查到,這段是CO別人的XD
這段的語法大概是說「走訪所有位在"
.\專案名稱\Content\Model"底下的檔案(包括子資料夾),如果符合(*.dds *.jpg *.png *.bmp)其中一條規則,則刪除之。
這段是用來清除FBX產出的紋理圖,但我不知道怎樣走訪資料夾,以及比對資料夾名稱,所以就直接針對圖檔下手囉!
希望有大大可以教一下m(_ _)m

基本上,檔案越多,瘦身的效果就越明顯。
像是HeightmapCollision範例產出來的地形xnb就有夠大的…
不刪對不起自己啊!

–End

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.