2005年03月15日

[Windows] 部署相同目錄結構檔案的簡便方法

我們在做程式開發時,為了測試方便一般都會在自己的工作電腦上建立系統運行的測試環境,例如系統運行的Web Server、Application Server或Database Server等,這樣便可以在自己電腦上做過測試,再把撰寫好的原始檔案複製到正式主機上。

我以Web-based的JSP程式來做說明:

本地端的Web應用程式目錄結構:

C:\Tomcat\webapps\MyApp\WEB-INF\jsp\accounting\*.jsp

正式主機用網路磁碟機連線成 M:,則在正式主機上有同樣的目錄結構:

M:\Tomcat\webapps\MyApp\WEB-INF\jsp\accounting\*.jsp

本地端電腦與主機端電腦擁有一模一樣的目錄結構,部署程式到主機的(簡化版的)步驟會是:

  1. 在本地端的開發環境撰寫、修改程式
  2. 啟動在本地端運行的全部Server程式 (Application Server+Database Server),開始測試(JSP就是利用瀏覽器來測試)
  3. 測試有問題便回到步驟1重新再來一次
  4. 累積正式程式到一定比例後,將可更新的程式複製到主機


我們今天要解決的是步驟4:將測試好的程式部署到正式環境的程序。在部署時我們遇到的前提是:

  • 不希望整個目錄更新,而希望只更新確實測試完成的程式;因為系統開發會是漸進式的,在更新某些程式時,同時也有別的程式正在開始撰寫或修改,因此若整個目錄更新的話勢必造成問題
  • 透過版本控制系統當然可以將部署程序做到更好的管制,但同時需要更嚴密的專案控管流程,小系統用之有時會有殺雞用牛刀的感覺(要看系統狀況而定),因此我們假設使用手動部署的方式來進行


為了簡化複製檔案的動作,同時用最簡單的方式來處理,因此撰寫了下列批次檔 dup.bat 來處理。

使用方法:dup  要複製的檔名  複製到那個磁碟機
使用範例:dup  index.jsp  M:   (把C:的index.jsp複製到M:同一目錄)
使用說明:dup.bat需要兩個參數:%1、%2

01 讓執行過程內容不顯示到螢幕
02, 03 若未輸入參數則跳至說明標籤處
04 把參數2指派給_TARGET變數,原因是環境變數的子字串操作無法套用到參數
05 取_TARGET變數(即目的磁碟機代號)的第2字元
06 若第2字元不是冒號,表示輸入錯誤,則跳到說明標籤處
07 用%CD%取出目前目錄,由磁碟機代號取,如C:\WINDOWS取成 \WINDOWS
11 將參數1的檔案複製到指定目錄

dup.bat 內容如下:

01 @echo off
02 if "%1" == "" goto USAGE
03 if "%2" == "" goto USAGE
04 set _TARGET=%2
05 set _TARGET=%_TARGET:~1,1%
06 if not "%_TARGET%" == ":" goto USAGE_DRIVE
07 set _CURR_DIR=%CD:~2%
08 echo copy %1 %2%_CURR_DIR%
09 del %2%_CURR_DIR%\%1.bak > nul
10 copy %2%_CURR_DIR%\%1 %2%_CURR_DIR%\%1*.bak
11 copy %1 %2%_CURR_DIR%
12 goto END
13 :USAGE
14 echo 用法: %0 要複製的檔名 要複製到那個磁碟機(目錄結構相同)
15 echo 範例:%0 "c:\windows\notepad.exe" k:
16 goto END
17 :USAGE_DRIVE
18 echo 第2個參數必須為磁碟機代號(含冒號)
19 echo 範例:%0 "c:\windows\notepad.exe" k:
20 :END
21 %2
22 cd %2%_CURR_DIR%
23 dir %2%_CURR_DIR%\%1



Add to Furl    Add to del.icio.us

Posted by emisjerry at 樂多Roodo! │23:43 │回應(0)引用(0)作業系統備忘
樂多分類:網路/3C 共同主題:Utilities/Tools 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/40803