2006年07月16日
方便切換目錄的指令:PUSHD與POPD
有時候在DOS視窗裡以 CD 指令切換紀錄目錄,切來切去,當要換回前面切換過的目錄時,若能善用PUSHD與POPD就會方便許多。
- PUSHD 要切換到的目錄,執行結果和CD相同,但會把目 前目錄推入堆疊裡,供POPD取回
- POPD 取回Push堆疊裡的最後目錄
| C:\Documents
and Settings\JERRY\Application Data>PUSHD "c:\Program Files" C:\Program Files>PUSHD d:\ D:\>PUSHD c:\windows C:\Windows> |
我們變更提示符號字串,就能更方便的了解Push堆疊的階層:
set Prompt=$P$+$G
平常的提示符號是$P$G,新加進去的$+顯示出來的就是堆疊的階層,第幾層就顯示幾個加號。變更後的上述指令如下:
| C:\Documents
and
Settings\JERRY\Application Data>PUSHD "c:\Program Files" C:\Program Files+>pushd d:\ D:\++>pushd c:\windows C:\WINDOWS+++>popd D:\++>popd C:\Program Files+>popd C:\Documents and Settings\JERRY\Application Data> |
最後把PROMPT環境變數 加到系統裡:桌面→我的電腦→內容→進階頁籤→環境變數,新增PROPMT系 統變數,變數值是$P$+$G。
##
...繼續閱讀
2006年07月15日
自行新增「右鍵功能表選項」的方法
首先把要執行的功能準備好,例如在C:\Windows目錄裡建立一個dirlist.bat,用來產生資料夾裡的檔案清單。
| C:\Windows\dirlist.bat |
| dir /o:gen > filelist.txt notepad filelist.txt |
接著是建立新的功能表項目的步驟:
- 由檔案總管的【工具→資料夾選項...→檔案類型頁籤】
- 在「註冊的檔案類型」在開頭位置找到「 (NONE) 資料夾」
- 按右下方的「進階」
- 在編號檔案類型裡用新增把dirlist.bat輸入進去

以上動作完成後,資料夾的右鍵功能表裡就會出現自行建立的選項。

但新增後卻無法直接刪除選項的介面,必須用regedit.exe在
HKEY_CLASSES_ROOT\Folder\shell\
節點裡找到新增的選項後刪除。
## ...繼續閱讀
2006年04月29日
微軟新字體:正黑體
由上述網址把字形下載後,Windows除了細明體、標楷體之外,又多了黑體了。
另外在將網頁的字型換成「微軟正黑體」這篇則提到如何透過修改Registry變更IE瀏覽器字形的方法。
## ...繼續閱讀
2006年02月23日
Windows 2003的關閉群組功能有問題!?
最近在測試Web Server的負載平衡(Load Balance)功能,必須頻繁的開啟許多個IE視窗,測試後為了快速關閉這些佔滿工作列的IE圖示按鈕,於是用群組關閉功能,也就是用Ctrl+左鈕選取要關閉的圖示後,用右鈕功能表裡『關閉群組』來一次關閉點選了的所有視窗。
然而在操作過幾次關閉群組後發現新開的IE越來越慢,幾近當機的停頓狀況,剛開始會懷疑是IE的暫存區檔案太多或是被間諜軟體影響到,因此刪除暫存檔或用Anti-Spyware工具掃描就經常執行,耗費許多時間。
今天突然注意到發生狀況的規律性:都是在做了關閉群組後才變成異常,此時特別開啟了工作管理員來觀察,竟然發現IEXPLORE.EXE全部都還留在處理程序裡!這應該是表示了關閉群組應該要關掉的程式,操作介面的部份被關閉了,但仍有程式Hang在記憶體裡,逐一用結束處理程序將這些殘留的程式移除後,再開啟IE視窗就恢復正常了。
我的結論是:少用關閉群組的功能吧。
##
...繼續閱讀2006年02月3日
Widnows登錄壞掉了
不知為何,在移除PC-AnyWhere 10後開機啟動時出現下列錯誤而無法進入Windows:
Windows 2003無法啟動,因為下列檔案遺失或損毀: \WINDOWS\SYSTEM32\CONFIG\SYSTEM
還好由如何修復造成Windows XP無法啟動的損毀登錄查到解決步驟,因此依指示操作,最後雖然只能做完成第一部份,但大部份的環境都回復了,只有部份驅動程式必須重裝,算是不幸中的大幸...。
##
2005年09月29日
DOS提示字元的快速編輯選項

但自行複製「DOS提示字元」到桌面或資料夾時,上述右鈕複製與貼上功能卻無法成功。測試了半天,原來是編輯選項內的快速編輯模式要勾選才行,打勾後就能正常操作了。

##
...繼續閱讀
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
本地端電腦與主機端電腦擁有一模一樣的目錄結構,部署程式到主機的(簡化版的)步驟會是:
- 在本地端的開發環境撰寫、修改程式
- 啟動在本地端運行的全部Server程式 (Application Server+Database Server),開始測試(JSP就是利用瀏覽器來測試)
- 測試有問題便回到步驟1重新再來一次
- 累積正式程式到一定比例後,將可更新的程式複製到主機
我們今天要解決的是步驟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
...繼續閱讀
2005年03月3日
[Java] jTDS: SQL Server的JDBC驅動程式
SQL Server在台灣用得相當普遍,而我們一直使用的JDBC驅動程式始終都是德國公司I-Net Software的Opta (JDBC 2.0)與Merlia(JDBC 3.0),使用I-Net的原因是:當時微軟尚未推出其JDBC驅動程式且無成熟的Open Source驅動程式,因此在試用過市場上的商用驅動程式後,最後才確定採用I-Net的程式;微軟對Java的立場始終很微妙,或許是迫於市場壓力,最終不得不推出外購自DataDirect的JDBC驅動程式。
有趣的是,支援SQL Server 2005的新版 6.02版JDBC驅動程式換成了I-Net Software的版本(參考:http://www.inetsoftware.de/English/i-net/MSSQL2005.htm)。
雖然I-Net的驅動程式穩定、效率佳,但終究需要一筆費用,因此最近開始研究採用Open Source的jTDS 1.0.2之可行性,如果它能取代商用的驅動程式,那就真的太好了。以下是一些彙總。
jTDS的類別:
| Interface | jTDS Implementation |
| java.sql.Driver | net.sourceforge.jtds.jdbc.Driver |
| javax.sql.DataSource | net.sourceforge.jtds.jdbcx.JtdsDataSource |
| javax.sql.ConnectionPoolDataSource | net.sourceforge.jtds.jdbcx.JtdsDataSource |
| javax.sql.XADataSource | net.sourceforge.jtds.jdbcx.JtdsDataSource |
而它的URL格式是:
jdbc:jtds:<server_type>://<server>[:<port>][/<database>]例如:jdbc:jtds:sqlserver://localhost:1433/Northwind;charset=Big5
[;<property>=<value>[;...]]
由於TDS支援的資料庫除了SQL Server外,還有Sybase,因此要指定
##
2005年02月23日
[Windows] 環境變數的擴充功能
問題:用Windows的排程在每天半夜自動備份檔案,備份檔名要帶當日月份與日期, 例如:backup_0223.zip(前提是要完全用批次檔處理,不然自己寫程式當然就解決了)。
解法:
- 系統日期在DOS下可以用%DATE%環境變數取得
- 用類似 7z.exe a backup_%DATE%.zip d:\dir1 的方式就完成了
- 結果並不像想的那麼單純。%DATE%傳回的是類似"2005/02/23 星期三"這樣的文字, 其內的斜線(/)或減號(-)都是用做命令列的選項符號,這樣的組合可能會造成錯誤。
- 在此最簡單的方法便是用環境變數的擴充功能了:backup_%DATE:~5,2%.zip→取環境 變數DATE的值,由第六碼開始取兩碼(由0開始算,第六碼要用5), 組合後的檔名是backup_02.zip。
- 繼續取日期:backup_%DATE:~5,2%%DATE:~8,2%.zip→ 結果為backup_0223.zip
- 先用echo命令測試:echo backup_%DATE:~5,2%%DATE:~8,2%.zip
- 以上取子字串的位置會依控制台"地區及語言選項"內的日期格式設定而有不同
- Windows 2000與XP不清楚是否已有此擴充
環境變數取代功能已經有下列增強:
%PATH:str1=str2%
會將 PATH 環境變數展開,取代每個發現的 "str1" 與 "str2"的擴充結果。
"str2" 可以是空白字串,這會從擴充輸出中刪除全部 "str1"。"str1" 可以
用星號開始,這將會從擴充輸出的開頭開始,對應到從所有第一個發現含有
str1 的項目。
您也可以為擴充功能指定子字串。
%PATH:~10,5%
這將會擴充 PATH 環境變數,然後只使用擴充結果的第 11 個(位移 10)字元
後的 5 個字元如果長度未指定,將會預設為上次使用的變數值。如果數字(位
移或長度)是負數,使用的數字將會是環境變數的長度加上位移或指定長度。
%PATH:~-10%
將抽出 PATH 變數的最後 10 個字元。
%PATH:~0,-2%
將抽出 PATH 變數的最後 2 個字元。
最後,系統加入了延遲環境變數展開的支援。在預設狀態下,命令展開會啟
用這項支援,但是您可以在 CMD.EXE 用 /V 命令列參數來啟用/停用這個功
能。 請參看 CMD /?
## ...繼續閱讀
2005年02月17日
[Windows] 快速啟動「服務」、「新增/刪除程式」視窗的方法
每次在Windows 2000中要找到「服務」視窗都要找好久(所以大家才會把服務在desktop上建捷徑),其實我們可以在MS-DOS模式下輸入下列指令直接執行服務:
c:\winnt\system32\services.msc
msc代表Microsoft Console的意思,透過檔案關聯,服務(services)就會被載入了.因為PATH都會有c:\winnt\system32,因此只要輸入services.msc就可以了。
直接在DOS開啟控制台視窗的最快方法是:control.exe
快速開啟「新增/刪除程式」視窗的方法是在DOS下執行 appwiz.cpl,appwiz應該是Application Wizard的意思,.cpl則表示控制台(Control Panel)。
main.cpl則是開啟滑鼠內容視窗。
desk.cpl則是開啟螢幕內容視窗。
control desk.cpl,@0,2 這樣也可以開啟螢幕內容視窗,而且直接將頁籤移到螢幕保護程式(Windows 2000用@0,1)。
@數字是表該.CPL檔內第幾個小程式,最後面的數字則是第幾頁籤;以上兩個數字都是由0起算。
例:CONTROL.EXE TIMEDATE.CPL,@0,1 開啟日期/時間小程式的第二個時區頁籤。
參考:http://www.plasma-online.de/english/help/solutions/rundll32.html http://www.plasma-online.de/english/help/solutions/rundll32.html
http://www.robvanderwoude.com/index.html ## ...繼續閱讀
