一個腳本的誕生

 手上一個有一個讓人很鬱悶的工作,那就是維護項目組給客戶的示例。這個示例包含4個project,各有20多個文件,每次修改的時候就會有示例需要修改,修改後的文件必須按照project爲單位打成zip包,copy到指定的地方去。包裏不能包含編譯產生的文件,還必須包含所引用的DLL。所以每次我要對每個project做以下操作:

1. 刪除bin目錄;

2. 看引用了那些dll,從一個地方考過來覆蓋掉,通常是4個,每個名字都很長;

3. 把project打成zip包;

4. copy到指定地方。

 

4個操作,重複4遍,看着簡單,實際相當的無趣,而且稍有點兒錯老闆就不高興了。

 

幾經周折後,我決定寫了如下腳本,當然首先感謝7zip這個偉大的壓縮開源項目,讓我有機會從命令行生成zip文件。

腳本和4個project放在同一個目錄下。該目錄下還有一個Assembly文件夾存放所有的dll文件。

 

首先,刪除掉上次生成的zip文件:

del *.zip

 

接下來的腳本還是比較巧妙的,它首先掃描項目中引用了那些dll,然後從Assembly文件夾中考出去覆蓋掉。

解釋一下 連續兩個%是因爲批處理文件中,第一個%是轉義用的。%~nxx表示文件的名字和擴展名,直接用%x的話,代表文件的全路徑,那是相當的長。

for /R . %%x in (*.dll) do (
  Attrib -R %%x
  copy /Y Assembly/%%~nxx %%x
)

 

下一步刪除所有編譯生成的文件, /S是遞歸刪除,/Q 無需確認

rmdir /S/Q xxx/bin xxx/obj
7z a xxx.zip xxx/

 

去掉目標的只讀屬性

Attrib -R -S %DEST%/*.zip

考過去,用新的zip覆蓋舊的 /Y 無需確認

copy /Y *.zip %DEST%/SampleCode/

不禁感慨dos的腳本還是挺強大的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章