2009年7月30日 星期四

CMD 命令 - A - D 字部

ASSOC - 顯示或修改副檔名的關聯

ASSOC [.ext[=[fileType]]]

.ext 指定副檔名,使檔案類型與
fileType 產生關聯 指定檔案類型,以便和副檔名產生關聯。

鍵入 ASSOC 並且不加任何的參數,以顯示目前的檔案關聯性。如果
ASSOC 只呼叫一個副檔名,它將會顯示該副檔名目前的檔案關聯性。
如果不指定檔案類型,命令便會將副檔名的關聯性刪除。


AT - 排定電腦上要執行的命令和程式

AT 命令排定某些命令或程式在某個特定的日期和時間,在電腦上執行。
執行 AT 命令之前必須先啟動 Schedule 服務。

AT [\\\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\\\computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] \"command\"

\\\\computername 指定遠端電腦。
如果省略這個參數,命令會被排定在本機上執行。
id 指定給排定時程命令的識別碼。
/delete 刪除某個已排程的命令。如果省略 id,所有電腦上已排程的
命令都會被刪除。
/yes 用於刪除所有已排程的工作,且不想在執行刪除時顯示確認訊息
使用。
time 指定命令執行的時間。
/interactive 允許\工作在執行時,與當時登入的用戶互動。
/every:date[,...] 指定在每週或每月的某日 (或某幾日) 執行命令。
如果省略日期,則預設為在每月的本日執行。
/next:date[,...] 指定在下一次的指定日期 (如,下週三) 時,執行命令。
如果省略日期,則預設為在每月的本日執行。
\"command\" 準備執行的 Windows NT 命令或批次檔。


ATTRIB - 顯示或變更檔案屬性

ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:][path][filename]
[/S [/D]]

+ 設定屬性。
- 清除屬性。
R 唯讀檔案屬性。
A 保存檔案屬性。
S 系統檔案屬性。
H 隱藏檔案屬性。[drive:][path][filename]
指定一個或一個以上的檔案給 attrib 處理。
/S 處理目前的資料夾及所有子資料夾中相
符的檔案。
/D 一併處理資料夾。


BREAK - 設定或清除 DOS 系統的延伸 CTRL+C 檢查

這是為了與 DOS 系統的相容性而保留,在 Windows XP 裡沒有作用。

如果您啟用擴充命令,並在 Windows XP
平台執行時,那麼 BREAK 命令會在以偵錯程式偵錯時
輸入一個硬式編碼中斷點。

CACLS - 顯示或修改檔案的存取控制清單 (ACLs)

CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]]

[/P user:perm [...]] [/D user [...]]

filename 顯示 ACL。

/T 變更指定檔案的 ACL 於

現有的目錄或所有子目錄中。

/E 編輯 ACL 而非將它取代。

/C 拒絕存取的錯誤繼續發生。

/G user:perm 授與指定的使用者存取權限。

Perm 的值可以是: R 讀取

C 變更 (寫入)

F 完全控制

/R user 撤銷已指定的使用者存取權限 (只有當 /E 存在時才有效)。

/P user:perm 取代已指定的使用者存取權限。

Perm 的值可以是: N 沒有權限

R 讀取

C 變更 (寫入)

F 完全控制

/D user 拒絕已指定的使用者存取。

您可以在命令中使用萬用字元一次指定數個檔案。

您可以在命令中指定數個使用者。

縮寫:

CI - 容器繼承。

ACE 將被目錄繼承。

OI - 物件繼承。

ACE 將被檔案繼承。

IO - 僅供繼承。

ACE 不可套用到目前的檔案/目錄。

CALL - 從批次程式中呼叫另一程式

CALL [drive:][path]filename [batch-parameters]

batch-parameters 指定批次程式所需要的命令列資訊。

如果您啟用擴充命令,CALL 命令的變更如下:

CALL 命令現在可以用標籤來當作 CALL 命令的目標。語法為:

CALL :label arguments

這會用指定的 arguments 來建立一個新的批次檔檔案內容,而且控制權
會被傳到指定的 label 後的敘述。您必須 \"exit\" 兩次,因為批次檔
的結尾會被執行兩次。第一次您讀入批次檔結尾時,控制權會回到 CALL
描述的下一個敘述。而第二次則會結束批次檔的執行。請鍵入 GOTO /?
來獲得 GOTO :EOF 擴充命令的描述。 這個命令可以讓您從批次檔中
\"return\" 。

此外,批次檔參數的參考 (%0, %1,
及其他) 已經做了如下的擴充:


%* 在批次檔中,這代表所有的參數 (e.g. %1 %2 %3
%4 %5 ...)

批次參數的取代 (%n) 已經做了改進。 您現在可以
選用下列的語法:

%~1 - 展開 %1 且移除包圍的引號 (\")
%~f1 - 展開 %1 為一個完全符合的路徑名稱
%~d1 - 只展開 %1 為磁碟機代號
%~p1 - 只展開 %1 為路徑
%~n1 - 只展開 %1 為檔名
%~x1 - 只展開 %1 為副檔名
%~s1 - 展開的路徑只包含短檔名
%~a1 - 展開 %1 為檔案的檔案屬性
%~t1 - 展開 %1 為檔案的日期/時間
%~z1 - 展開 %1 為檔案的長度
%~$PATH:1 - 搜尋所有列在 PATH 環境變數內的目錄
且展開 %1 為
第一個找到的完全符合檔名。
如果沒有定義環境變數名稱
或是搜尋找不到檔案,
則這個修飾元會展開成
空字串。

修正程式可合併使用,進而得到複合結果:

%~dp1 - 只擴充 %1 到磁碟機代號和路徑
%~nx1 - 只擴充 %1 到檔案名稱和副檔名
%~dp$PATH:1 - 搜尋 %1 的 PATH 環境
變數中所列的目錄,並擴充至
磁碟機代號和第一個找到的路徑。
%~ftza1 - 將 %1 擴充成 DIR ,和輸出行相同

在上例中,%1 和 PATH 可被其他有效值取代。%~ 語法是
以正確的引數數字作結尾。%~ 修正程式可能無法使用 %*


CD - 顯示目前工作目錄的名稱或是變更目錄

CHDIR [/D] [drive:][path]
CHDIR [..]
CD [/D] [drive:][path]
CD [..]

.. 指定變更到上層目錄。

鍵入 CD drive: 即可顯示指定磁碟機的目前工作目錄。
僅鍵入 CD 而不加參數,即可顯示目前的磁碟機和目錄。

使用 /D 參數可以同時變更工作磁碟機及其工作目錄。

如果您啟用擴充命令,CHDIR 的變更如下:

目前的目錄字串會被轉換成與磁碟上名稱相同大小寫的字串。
所以如果磁碟上的目錄是 C:\\Temp 的話,CD C:\\TEMP 命令實
際上會轉換為 CD C:\\Temp。

CHDIR 命令不會將空格當成分隔字元,所以如果您要切換到含
有空格字元的目錄時,就算您不使用引號來括住目錄名稱,也
一樣可以用 CD 命令切換到該目錄。例如:

cd \\winnt\\profiles\\username\\programs\\start menu

就相等於:

cd \"\\winnt\\profiles\\username\\programs\\start menu\"

如果您停用擴充命令,就必須輸入前一種命令。


CHCP - 顯示或設定使用中字碼頁編號

CHCP [nnn]

nnn 指定字碼頁編號。

不加參數鍵入 CHCP 顯示使用中字碼頁編號。


CHDIR - 顯示目前工作目錄的名稱或是變更目錄

CHDIR [/D] [drive:][path]
CHDIR [..]
CD [/D] [drive:][path]
CD [..]

.. 指定變更到上層目錄。

鍵入 CD drive: 即可顯示指定磁碟機的目前工作目錄。
僅鍵入 CD 而不加參數,即可顯示目前的磁碟機和目錄。

使用 /D 參數可以同時變更工作磁碟機及其工作目錄。

如果您啟用擴充命令,CHDIR 的變更如下:

目前的目錄字串會被轉換成與磁碟上名稱相同大小寫的字串。
所以如果磁碟上的目錄是 C:\\Temp 的話,CD C:\\TEMP 命令實
際上會轉換為 CD C:\\Temp。

CHDIR 命令不會將空格當成分隔字元,所以如果您要切換到含
有空格字元的目錄時,就算您不使用引號來括住目錄名稱,也
一樣可以用 CD 命令切換到該目錄。例如:

cd \\winnt\\profiles\\username\\programs\\start menu

就相等於:

cd \"\\winnt\\profiles\\username\\programs\\start menu\"

如果您停用擴充命令,就必須輸入前一種命令。


CHKDSK - 檢查磁碟並顯示狀態報告

CHKDSK [volume[[path]filename]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:size]]


volume 指定磁碟機代號 (後接冒號),
掛接點或磁碟區名稱。
filename 只能用在 FAT/FAT32: 指定要進行分散程度檢查的檔案。
/F 修復磁片上的錯誤。
/V FAT/FAT32 模式: 顯示磁碟上每個檔案的完整路徑
及名稱。
NTFS 模式: 如果有清除的訊息,也一併顯示。
/R 找出損壞的磁區並復原可讀取的資訊。
(包含 /F)。
/L:size 只適用於 NTFS 模式: 將記錄檔大小變更為指定的 KB
數值。如果沒有指定記錄檔大小,就顯示目前的大小。
/X 如果必須的話,強制先解下磁碟區。所有在
磁碟區上開啟的控制代碼都會失效 (包含 /F)。
/I 只適用於 NTFS 模式: 不檢查索引項目。
/C 只適用於 NTFS 模式: 跳過資料夾結構的循環檢查。


使用 /I 或 /C 參數跳過某些磁碟區檢查,可以在執行
Chkdsk 時減少檢查時間。


CHKNTFS - 開機時顯示或修正磁碟檢查

CHKNTFS volume [...]
CHKNTFS /D
CHKNTFS /T[:time]
CHKNTFS /X volume [...]
CHKNTFS /C volume [...]

volume 指定磁碟機代號 (後接冒號),
掛接點或磁碟區名稱。
/D 將電腦還原成預設行為。會在啟動時對全部的磁
碟機進行檢查,有問題的磁碟機會執行 chkdsk。
/T:time 變更 AUTOCHK 倒數計時的時間成
指定的總計秒。如果時間沒有設定,
請顯示目前的設定。
/X 在預設開機檢查中排除磁碟檢查。被排除的
磁碟機不會保留在命令呼叫之間。
/C 進行開機時的磁碟檢查排程。如果
磁碟有問題,會執行 chkdsk。
/E 啟用 NTFS 磁碟區自動升級。升級後必需
重新開機。(這會啟用所有的 NTFS 進階
支援功\能。)

如果沒有指定參數 , CHKNTFS 將顯示每台磁碟
有問題的位元狀態或是在下次重新開機時排程檢查。


CLS - 清除螢幕

CLS


CMD - 啟動 Windows XP 命令直譯器新例項

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[[/S] [/C | /K] string]

/C 執行字串中所描述的命令然後結束命令視窗
/K 執行 字串中所描述的命令然後保留命令視窗
/S 修改字串在 /C 或 /K (參看下方)
/Q 關閉 echo
/D 從登錄中停用 AutoRun 命令(參看下方)
/A 將內部命令輸出結果以 ANSI 格式導向 pipe 或檔案
/U 將內部命令輸出結果以 Unicode 格式導向 pipe 或檔案
/T:fg 設定幕前/幕後色彩 (參看 COLOR /?)
/E:ON 啟用命令延伸 (參看下方)
/E:OFF 停用命令延伸 (參看下方)
/F:ON 啟用檔案及目錄名稱完整字元(參看下方)
/F:OFF 停用檔案及目錄名稱完整字元(參看下方)
/V:ON 啟用延遲環境變數延伸,用 c 作為分隔字元。例如,
/V:ON 可以讓 !var! 在執行時展開變數 var。文法
var 則會在輸入時展開變數,這在 FOR 迴圈之中是
完全不同的事。
/V:OFF 停用延遲環境變數展開

請注意用命令分隔字元 \'&&\' 隔開的多個命令如果被引號包含時則會被
當成字串來接受。此外,為了相容性的原因,/X 的作用與 /E:ON 相同;
/Y 與 /E:OFF 相同且 /R 與 /C 相同。其餘的參數則會被忽略。

如果指定了/C 或 /K,則在參數後的其餘命令列會被當成命令列來處理,
其中使用下面的邏輯來處理引號字元 (\") :

1. 如果所有下列條件都符合,那麼命令列上的引號會被保留:

- 沒有 /S 參數
- 正好有兩個引號
- 在兩個引號之間沒有下列特殊字元: &<>()@^|
- 兩個引號之間有一些空格
- 在兩個引號之間的字串是執行檔的檔案名稱。

2. 否則,舊的行為是如果第一個字元是引號,會把前置字元
去掉,並將命令列中第一個引號及最後一個引號之間的所有
文字便成保留文字。

如果您在命令列中未指定 /D,當 CMD.EXE 起動後,
它會尋找下列 REG_SZ/REG_EXPAND_SZ的 登錄變數。如果
有一個存在或兩個都存在,命令會執行第一個變數。

HKEY_LOCAL_MACHINE\\Software\\Microsoft\\CommandProcessor\\AutoRun

及/或

HKEY_CURRENT_USER\\Software\\Microsoft\\CommandProcessor\\AutoRun

將命令擴充功\能預設成啟用狀態。您可以在特定的
呼叫中,用 /E:OFF 參數來停用擴充功\能。
您可以啟用或停用一台電腦上或使用者登入工作階段中所有
CMD.EXE 呼叫的擴充功\能,如果您要這樣作,
請使用 REGEDT32.EXE 來設定以下的 REG_DWORD 值:

HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Command Processor\\EnableExtensions

及/或

HKEY_CURRENT_USER\\Software\\Microsoft\\Command Processor\\EnableExtensions

到 0x1 或 0x0。使用者指定設定的執行優先順序高於電腦上
的設定。命令列參數的執行優先順序高於登錄中的設定值。


擴充命令包括下列命令的變更及(或)
新增:

DEL or ERASE
COLOR
CD or CHDIR
MD or MKDIR
PROMPT
PUSHD
POPD
SET
SETLOCAL
ENDLOCAL
IF
FOR
CALL
SHIFT
GOTO
START (也包括援用外部命令之變更)
ASSOC
FTYPE

請鍵入 HELP 命令名稱,以查閱\說明。

預設狀態下,不會啟用延遲環境變數擴充。您可以
使用 /V:ON 或 /V:OFF 參數在執行 CMD.EXE 時啟用
或停用完整檔案名稱。您也可以用 REGEDT32.EXE 來
修改以下 REG_DWORD 值,來啟用或停用整個電腦上或
使用者登入工作階段中所有 CMD.EXE 的檔案名稱完整功\能:

HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Command Processor\\DelayedExpansion

及/或

HKEY_CURRENT_USER\\Software\\Microsoft\\Command Processor\\DelayedExpansion

其值可為 0x1 或 0x0。使用者指定設定的優先順序高於
電腦設定。命令列參數優先順序高於登錄設定值。

如果已啟用延遲環境變數擴充,驚嘆號字元會在執行時
被用來取代環境變數值。

預設無法啟用檔案和目錄名稱完成。 您可以為特定的 CMD.EXE 呼叫,以
/F:ON 或 /F:OFF 開關啟用或停用檔案名稱完成。 您可以啟用或停用在同
一部電腦上所有 CMD.EXE 的呼叫完成及/或使用者登入工作階段。方法是使
用 REGEDT32.EXE 設定其一或兩者登錄中的 REG_DWORD 值:

HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Command Processor\\CompletionChar
HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Command Processor\\PathCompletionChar

及/或

HKEY_CURRENT_USER\\Software\\Microsoft\\Command Processor\\CompletionChar
HKEY_CURRENT_USER\\Software\\Microsoft\\Command Processor\\PathCompletionChar

用於特定功\能的控制字元十六進位值 (例如 0x4 是 Ctrl-D ; 0x6 是
Ctrl-F)。使用者指定設定的執行優先順序高於電腦上的設定。命令列參數
的執行優先順序高於登錄中的設定值。

如果以 /F:ON 開關啟用完成,則用於目錄名稱完成的控制字元是 Ctrl-D
而用於檔案名稱完成的控制字元是 Ctrl-F。如果您要停用在登錄中的特定
完成字元,請使用空間值 (0x20),因為它不是正確的控制字元。

當您鍵入其中一個控制字元後,完成功\能會被啟動。如果路徑字串已存在,
而且所建立的路徑清單也符合的話,完成函數會讀取到指標所在左方為止
的路徑字串。然後它會顯示第一個符合的路徑。如果找不到符合的路徑,
它會發出嗶聲並保留顯示。如果您重覆按相同的控制字元,它將在符合的路
徑清單中循環執行。如果您同時按下 Shift 鍵與控制字元,可在清單中反
向移動。如果您進行編輯後再按控制字元的話,已儲存的符合路徑清單會被
丟棄,並建立新的清單。如果您在檔案及目錄完成功\能之間切換,會有同樣
的情況發生。這兩個控制字元不同之處是:檔案完成字元可同時對應檔案及
目錄名稱,而目錄完成字元只能對應目錄名稱。如果您將檔案完成功\能用在
內建目錄命令上 (CD,MD 或 RD) 也等於使用了目錄完成功\能。

如果您在路徑字串兩端加上引號,完成功\能鍵就可正確處理包含空格或其他
特殊字元的檔案名稱。還有,如果您備份後,又在命令列中呼叫完成功\能的
話,已呼叫過完成功\能的指標右方的文字會被丟棄。

要求加上引號的特殊字元有:
&()[]{}^=;!\'+,`~


COLOR - 設定預設主控台的前景及背景色彩

COLOR [attr]

attr 指定主控台輸出的色彩屬性。

色彩屬性由 TWO 十六進位數字所指定 -- 第一個對應於背景,第二個對應於
前景。每一數位可為以下其中一個值:

0 = 黑色 8 = 灰色
1 = 藍色 9 = 淡藍色
2 = 綠色 A = 淡綠色
3 = 藍綠色 B = 淡藍綠色
4 = 紅色 C = 淡紅色
5 = 紫色 D = 淡紫色
6 = 黃色 E = 淡黃色
7 = 白色 F = 亮白色

如果沒有指定引數,這個命令會還原成 CMD.EXE 啟動時的色彩。這個值可能
來自目前主控台視窗、/T 命令列參數或來自 DefaultColor 登錄值。

COLOR 命令設定 ERRORLEVEL 為 1,如果您嘗試執行
COLOR 命令,並指定相同的前景和背景色彩的話。

範例: \"COLOR fc\" 產生淡紅色於亮白色上


COMP - 比較兩個檔案或兩組檔案的內容

COMP [data1] [data2] [/D] [/A] [/L] [/N=number] [/C] [/OFF[LINE]]

data1 指定第一個或第一組要比較的檔案的位置與檔名。
data2 指定第二個或第二組要比較的檔案的位置與檔名。
/D 以十進位格式來顯示不同之處。
/A 以 ASCII 字元來顯示不同之處。
/L 顯示不同之處的行號。
/N=number 只比較每個檔案中第一個指定的行號。
/C 比較檔案時忽略 ASCII 字母的大小寫。
/OFF[LINE] 不要略過有離線屬性設定的檔案。

要比較一組檔案,請在 data1 和 data2 參數中使用萬用字元。


COMPACT - 顯示或改變 NTFS 磁碟分割上的檔案壓縮

COMPACT [/C | /U] [/S[:dir]] [/A] [/I] [/F] [/Q] [filename [...]]

/C 壓縮指定的檔案。將標示目錄使以後新增的檔案將被壓縮。
/U 解壓縮指定的檔案。將標示目錄使以後新增的檔案將不被解壓縮。
/S 對所給目錄及其所有子目錄下的檔案執行指定的作業,預設 \"dir\"
為目前的目錄。
/A 顯示有隱藏或系統屬性的檔案,這些檔案在預設中是被省略的。
/I 即使發生錯誤,仍繼續執行指定的操作。依預設,遇到錯誤時,
COMPACT 將停止。
/F 強迫壓縮所


CONVERT - 將 FAT 磁碟區轉換為 NTFS

CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X]

volume 指定磁碟機代號 (後接冒號),
掛接點或磁碟區名稱。
/FS:NTFS 指定將磁碟區轉換成 NTFS。
/V 指定在詳細訊息模式下執行轉換。
/CvtArea:filename
在根目錄中指定一個相連的檔案作為
NTFS 系統檔案的置放點。
/NoSecurity 指定已轉換的檔案和目錄的安全性
設定值能讓每個人存取。
/X 必要的話,強迫磁碟區先卸下。
所有已開啟的磁碟區控制碼將失效。


COPY - 將一些檔案複製到另一個位置

COPY [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ ...]] [destination [/A | /B]]

source 指定要複製的檔案。
/A 指定一個 ASCII 文字檔案。
/B 指定一個二位元檔案。
destination 為新檔案指定目錄及(或) 檔案名稱。
/V 確認新檔案是否正確寫入。
/N 使用短檔名來複製非 8.3 名稱的檔案
(如果可用的話)。
/Y 不顯示覆寫現存
目的檔案的確認提示。
/-Y 顯示覆寫現存目的
檔案的確認提示。
/Z 在可重新啟動模式中複製網路檔案。
參數 /Y 可以預先設定在 COPYCMD 環境變數中。
這可能會覆寫命令列中的 /-Y。預設值是
顯示覆寫確認提示,除非 COPY 命令是從
批次指令檔中執行。

如果要附加檔案,指定一個目的檔案,及數個
來源檔案 (使用萬用字元或 file1+file2+file3 格式)。


DATE - 顯示或設定日期

DATE [/T | date]

只鍵入 DATE 而不加上參數,可以顯示目前設定的日期,並且提示您輸入新的日
期。按 ENTER 鍵即可保持原來日期。

如果您啟用擴充命令,DATE 命令會支援 /T 參數,這個參數
會讓命令只輸出目前的日期,而不提示您輸入新日期。


DEL - 刪除一個或更多檔案

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

names 指定一個或更多檔案或目錄清單。
可以使用萬用字元來刪除多個檔案。 如果
指定目錄,這個目錄內的所有檔案
將被刪除。

/P 刪除每個檔案前,先提示確認。
/F 強制刪除唯讀檔案。
/S 由所有子目錄刪除指定的檔案。
/Q 安靜模式,不要問是否確定刪除全域萬用字元
/A 根據屬性選取要刪除的檔案
attributes R 唯讀檔案 S 系統檔案
H 隱藏檔案 A 準備保存的檔案
- 首碼表示不是

如果您啟用擴充命令,DEL 和 ERASE 命令的變更如下:

/S 參數的顯示方式完全相反,它只會顯示已刪除的檔案,不會顯示它找不到的
檔案。


DIR - 顯示檔案清單以列出目錄中的檔案及子目錄

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

[drive:][path][filename]
指定要顯示的磁碟機、目錄或檔案。

/A 依照指定的檔案屬性來顯示檔案。
attributes D 目錄 R 唯讀檔
H 隱藏檔 A 保存檔
S 系統檔案 - 無意義
/B 使用單純格式 (沒有標頭資訊或摘要)。
/C 顯示檔案大小千位數分隔符號。這是
預設值。 使用 /-C 來停用分隔符號的顯示。
/D 與寬的列表格式相同,但是依照欄來排序。
/L 使用小寫顯示。
/N 使用新的長列表格式,檔名會顯示在最右方。
/O 依照指定的排序順序來列出檔案。
sortorder N 依名稱 (英文字母) S 依大小 (最小的在前)
E 依副檔名 (英文字母) D 依照日期與時間 (日期較早的在前)
G 先列出子目錄 - 表示相反的順序
/P 當資料填滿整個螢幕時暫停顯示。
/Q 顯示檔案擁有者。
/S 顯示指定目錄及所有子目錄中的檔案。
/T 指定用來顯示或排序的時間欄位
timefield C 建立
A 上次檔案存取時間
W 上次寫入檔案時間
/W 使用寬的列表格式。
/X 顯示對非 8.3 格式的檔案產生的短檔名。
這個格式和 /N 相同,但是短檔名會插入在
長檔名之前。 如果沒有長檔名存在,該處會
顯示空白。
/4 顯示四位數的年份

參數可能會在 DIRCMD 環境變數預先設定。您可以在任何參數使用連字號字首(-)
來覆蓋\預先的設定--例如: /-W。


DISKCOMP - 比較兩片磁片的內容

DISKCOMP [磁碟機1: [磁碟機2:]]


DISKCOPY - 把一片磁片的內容複製到另一片中

DISKCOPY [磁碟機1: [磁碟機2:]] [/V]

/V 驗證訊息是否已正確複製。

兩片磁片的類型必須相同。
您可以把磁碟機 1 和磁碟機 2 指定成相同的磁碟機。


DOSKEY - 編輯命令列,重新呼叫 Windows XP 命令,及建立巨集

DOSKEY [/REINSTALL] [/LISTSIZE=size] [/MACROS[:ALL | :exename]]
[/HISTORY] [/INSERT | /OVERSTRIKE] [/EXENAME=exename] [/MACROFILE=filename]
[macroname=[text]]

/REINSTALL 安裝另一份 Doskey。
/LISTSIZE=size 設定命令歷程緩衝區的大小。
/MACROS 顯示所有的 Doskey 巨集。
/MACROS:ALL 顯示所有執行檔中含有 Doskey 巨集
的 Doskey 巨集。
/MACROS:exename 顯示指定的執行檔中的所有 Doskey 巨集。
/HISTORY 顯示存在記憶體中的所有命令。
/INSERT 指定您所鍵入的新文字插入在舊的文字中。
/OVERSTRIKE 指定您所鍵入的新文字覆蓋\舊的文字。
/EXENAME=exename 指定執行檔。
/MACROFILE=filename 指定要安裝的巨集檔案。
macroname 為您建立的巨集指定名稱。
text 指定您要記錄的命令。

向上與向下鍵叫回以前的指令; ESC 清除命令列;
F7 顯示命令歷程; ALT+F7 清除命令列歷程; F8 尋找命令歷程;
F9 以號碼選擇命令; ALT+F10 清除巨集定義

以下是在 Doskey 巨集定義中的特殊碼:
$T 命令分隔字元。允許\在一個巨集中使用多個命令。
$1-$9 批次檔參數。相當於批次檔中的 %1 到 %9。
$* 這個符號代表在命令列中巨集名稱後的所有文字。



轉載自:http://www.csie.ntu.edu.tw/~r91112/myDownload/WEB/CMD.html

2009年7月29日 星期三

解壓指令 - tar

tar [options] [tarfile] [other-files]
tar--long-option -function-options files


參數:
c, --create :建立一個壓縮文件
x, --extract :解開一個壓縮文件
t, --list :列出 .tar 裡面的文件!
Notice: 在參數的下達中, c/x/t 僅能存在一個!不可同時存在!因為不可能同時壓縮與解壓縮。

Z, --compress, --uncompress :使用compress命令處理備份文件
z, --gzip, --unzip :透過 gzip 處理備份文件
j, I, --bzip :使用bzip2命令處理備份文件
Notice:z和j都是在備份文件打包後才進行壓縮的操作的,並且,該操作會影響其他的參數

v, --verbose :壓縮的過程中顯示文件!不建議用在背景執行過程!
f fileName, --file=fileName :使用檔名,Notice: 在 f 之後要立即接檔名
C directoryName, --directory=directoryName :先進入指定的目錄,再釋放
--exclude FILE:在壓縮的過程中,不要將 FILE 打包!
--delete :將 .tar 中的某個檔案刪除


詳細參考:http://coz.tw/dz6/redirect.php?tid=18172&goto=lastpost


壓縮:
tar cjvf name.tar.bz2 /target /location
就地解縮:
tar xvf name.tar.bz2
解壓到不同目錄
tar xvf name.tar.bz2 -C /location

2009年7月22日 星期三

Tutorial 04a - 燈光的使用

重點API:
sandy.primitive.Box;
sandy.primitive.Cylinder;
sandy.primitive.PrimitiveMode;
sandy.primitive.Sphere;


  1. package
  2. {
  3. import flash.display.Sprite;
  4. import flash.events.Event;
  5. import flash.events.KeyboardEvent;
  6. import flash.ui.Keyboard;
  7. import sandy.core.Scene3D;
  8. import sandy.core.scenegraph.Camera3D;
  9. import sandy.core.scenegraph.Group;
  10. import sandy.core.scenegraph.TransformGroup;
  11. import sandy.materials.Appearance;
  12. import sandy.materials.attributes.CylinderEnvMap;
  13. import sandy.materials.attributes.LightAttributes;
  14. import sandy.materials.attributes.LineAttributes;
  15. import sandy.materials.attributes.MaterialAttributes;
  16. import sandy.materials.ColorMaterial;
  17. import sandy.materials.Material;
  18. import sandy.primitive.Box;
  19. import sandy.primitive.Cylinder;
  20. import sandy.primitive.PrimitiveMode;
  21. import sandy.primitive.Sphere;
  22. public class Example004a extends Sprite
  23. {
  24. private var scene:Scene3D;
  25. private var camera:Camera3D;
  26. private var tg:TransformGroup;
  27. // 設定燈光 x, y, z 軸參數
  28. private var lightX:Number = 0;
  29. private var lightY:Number = 0;
  30. private var lightZ:Number = 10;
  31. public function Example004a()
  32. {
  33. camera = new Camera3D(300, 300);
  34. camera.z = -400;
  35. var root:Group = createScene();
  36. scene = new Scene3D("scene", this, camera, root);
  37. // 設定場景燈光的方向位置
  38. scene.light.setDirection(lightX, lightY, lightZ);
  39. addEventListener(Event.ENTER_FRAME,
  40. enterFrameHandler);
  41. stage.addEventListener(KeyboardEvent.KEY_DOWN,
  42. keyPressed);
  43. }
  44. private function createScene():Group
  45. {
  46. var g:Group = new Group();
  47. tg = new TransformGroup();
  48. var materialAttr:MaterialAttributes =
  49. new MaterialAttributes(
  50. new LineAttributes(0, 0x2111BB, 0),
  51. new LightAttributes(true, 0.1)
  52. );
  53. var material:Material = new ColorMaterial(
  54. 0xFFCC33, 1, materialAttr
  55. );
  56. material.lightingEnable = true;
  57. var app:Appearance = new Appearance(material);
  58. var materialAttr2:MaterialAttributes =
  59. new MaterialAttributes(
  60. new LineAttributes(0, 0x2111BB, 0),
  61. new LightAttributes(true, 0.1)
  62. );
  63. var material2:Material = new ColorMaterial(
  64. 0xCC0000, 1, materialAttr
  65. );
  66. material2.lightingEnable = true;
  67. var app2:Appearance = new Appearance(material2);
  68. var materialAttr3:MaterialAttributes =
  69. new MaterialAttributes(
  70. new LineAttributes(0, 0x2111BB, 0),
  71. new LightAttributes(true, 0.1)
  72. );
  73. var material3:Material = new ColorMaterial(
  74. 0x008AE6, 1, materialAttr
  75. );
  76. material3.lightingEnable = true;
  77. var app3:Appearance = new Appearance(material3);
  78. // 產生一 Box 物件,並設定其參數,分別為:
  79. // 識別名稱、寬、高、深度、face generation 及 Quility
  80. var table:Box = new Box(
  81. "table", 10, 150, 200, PrimitiveMode.QUAD, 1
  82. );
  83. //table.enableBackFaceCulling = false;
  84. // 設定是否容許使用者改變呈現此 table 的方式
  85. table.useSingleContainer = false;
  86. // 設定 table 的外觀
  87. table.appearance = app;
  88. // 旋轉 table
  89. table.rotateY = 90;
  90. table.rotateX = 90;
  91. // 產生一 Cylinder 物件,並設定其參數,分別為
  92. // 識別名稱、半徑及高
  93. var leg01:Cylinder = new Cylinder("leg01", 5, 80);
  94. // 設定 leg01 的外觀
  95. leg01.appearance = app;
  96. // 設定 leg01 的 x,y,z 座標
  97. leg01.x = -80;
  98. leg01.y = -45;
  99. leg01.z = 50;
  100. var leg02:Cylinder = new Cylinder("lig02", 5, 80);
  101. leg02.appearance = app;
  102. leg02.x = 80;
  103. leg02.y = -45;
  104. leg02.z = 50;
  105. var leg03:Cylinder = new Cylinder("leg03", 5, 80);
  106. leg03.appearance = app;
  107. leg03.x = -80;
  108. leg03.y = -45;
  109. leg03.z = -50;
  110. var leg04:Cylinder = new Cylinder("leg04", 5, 80);
  111. leg04.appearance = app;
  112. leg04.x = 80;
  113. leg04.y = -45;
  114. leg04.z = -50;
  115. // 產生一 Sphere 物件,並設定其參數,分別為:
  116. // 識別名稱、半徑、水平切割數及垂直切割數
  117. var mySphere:Sphere = new Sphere("theSphere", 20, 20, 8);
  118. mySphere.useSingleContainer = true;
  119. mySphere.appearance = app2;
  120. mySphere.y = 25;
  121. mySphere.x = -30;
  122. var myBox:Box = new Box(
  123. "theBox", 60, 60, 60, PrimitiveMode.TRI, 3
  124. );
  125. myBox.useSingleContainer = true;
  126. myBox.appearance = app3;
  127. myBox.rotateY = 30;
  128. myBox.x = 40;
  129. myBox.y = 35;
  130. tg.addChild(table);
  131. tg.addChild(leg01);
  132. tg.addChild(leg02);
  133. tg.addChild(leg03);
  134. tg.addChild(leg04);
  135. tg.addChild(mySphere);
  136. tg.addChild(myBox);
  137. tg.rotateX = 5;
  138. g.addChild(tg);
  139. return g;
  140. }
  141. private function enterFrameHandler(evt:Event):void
  142. {
  143. // 將場景顯示快取設定為 false
  144. scene.render(false);
  145. }
  146. private function keyPressed(evt:KeyboardEvent):void
  147. {
  148. switch(evt.keyCode)
  149. {
  150. case Keyboard.PAGE_DOWN:
  151. // 減少場景燈光的亮度
  152. scene.light.setPower(scene.light.getPower() - 5);
  153. break;
  154. case Keyboard.PAGE_UP:
  155. // 增加場景燈光的亮度
  156. scene.light.setPower(scene.light.getPower() + 5);
  157. break;
  158. case Keyboard.UP:
  159. lightY += 10;
  160. scene.light.setDirection(lightX, lightY, lightZ);
  161. break;
  162. case Keyboard.DOWN:
  163. lightY -= 10;
  164. scene.light.setDirection(lightX, lightY, lightZ);
  165. break;
  166. case Keyboard.RIGHT:
  167. lightX += 10;
  168. scene.light.setDirection(lightX, lightY, lightZ);
  169. break;
  170. case Keyboard.LEFT:
  171. lightX -= 10;
  172. scene.light.setDirection(lightX, lightY, lightZ);
  173. break;
  174. }
  175. }
  176. }
  177. }


產出:



程式碼出處:http://www.flashsandy.org/tutorials/3.0/sandy_cs3_tut041

2009年7月20日 星期一

Ubuntu 下安裝 bin檔

1.首先把 .bin 檔拷貝到某目錄下,ex:/usr/local/
2.執行 chmod command
sudo chmod +x *.bin
3.執行 .bin 檔
sudo ./*.bin

2009年7月14日 星期二

Tutorial 04 - Start Moving

重點API:
sandy.core.scenegraph.TransformGroup
sandy.primitive.Cone
sandy.primitive.Hedra


  1. package
  2. {
  3. import flash.display.Sprite;
  4. import flash.events.*;
  5. import flash.ui.*;
  6. import sandy.core.Scene3D;
  7. import sandy.core.data.*;
  8. import sandy.core.scenegraph.*;
  9. import sandy.materials.*;
  10. import sandy.materials.attributes.*;
  11. import sandy.primitive.*;
  12. public class Example004 extends Sprite
  13. {
  14. private var scene:Scene3D;
  15. private var camera:Camera3D;
  16. private var tg:TransformGroup;
  17. private var myCone:Cone;
  18. private var myHeadra:Hedra;
  19. public function Example004()
  20. {
  21. // 產生 camera 物件
  22. camera = new Camera3D(300, 300);
  23. camera.x = 100;
  24. camera.y = 100;
  25. camera.z = -400;
  26. camera.lookAt(0, 0, 0);
  27. // 產生顯示物件群組
  28. var root:Group = createScene();
  29. // 產生場景物件,並將 camera 物件及顯示
  30. // 物件群組加到場景中
  31. scene = new Scene3D("scene", this, camera, root);
  32. addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  33. stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
  34. }
  35. private function createScene():Group
  36. {
  37. var g:Group = new Group();
  38. // 在每個座標軸,產生一線性物件
  39. var myXLine:Line3D = new Line3D("x-coord", new Point3D(-50, 0, 0),
  40. new Point3D(50, 0, 0));
  41. var myYLine:Line3D = new Line3D("y-coord", new Point3D(0, -50, 0),
  42. new Point3D(0, 50, 0));
  43. var myZLine:Line3D = new Line3D("z-coord", new Point3D(0, 0, -50),
  44. new Point3D(0, 0, 50));
  45. // 產生一移動群組物件, 並為其命名
  46. tg = new TransformGroup("myGroup");
  47. // 產生Cone object, 並設定其參數,分別為:
  48. // 識別名稱, 半徑及高
  49. myCone = new Cone("theObj1", 50, 100);
  50. // 產生 Hedra objecct,並設定其參數,分別為:
  51. // 識別名稱、高、寬及深度
  52. myHeadra = new Hedra("theObj2", 80, 60, 60);
  53. // 分別將 Cone 物件移到左邊, Hedra 物件移到右邊
  54. myCone.x = -160;
  55. myCone.z = 150;
  56. myHeadra.x = 90;
  57. // 產生 materialAttributes物件
  58. var materialAttr:MaterialAttributes = new MaterialAttributes(
  59. new LineAttributes(0.5, 0x2111BB, 0.4),
  60. new LightAttributes(true, 0.1)
  61. );
  62. var material:Material = new ColorMaterial(0xFFCC33, 1, materialAttr);
  63. material.lightingEnable = true;
  64. var app:Appearance = new Appearance(material);
  65. myCone.appearance = app;
  66. myHeadra.appearance = app;
  67. // 將兩個 objects 加入移動群組物件中
  68. tg.addChild(myCone);
  69. tg.addChild(myHeadra);
  70. // 將所有的物件加入 Group 物件中
  71. g.addChild(tg);
  72. g.addChild(myXLine);
  73. g.addChild(myYLine);
  74. g.addChild(myZLine);
  75. return g;
  76. }
  77. private function enterFrameHandler(evt:Event):void
  78. {
  79. // 調整 Headra 與 Cone 沿Y軸轉向的幅度
  80. myHeadra.pan += 4;
  81. myCone.pan += 4;
  82. scene.render();
  83. }
  84. private function keyPressed(evt:KeyboardEvent):void
  85. {
  86. switch(evt.keyCode)
  87. {
  88. case Keyboard.UP:
  89. tg.y += 2;
  90. break;
  91. case Keyboard.DOWN:
  92. tg.y -= 2;
  93. break;
  94. case Keyboard.RIGHT:
  95. tg.roll += 2;
  96. break;
  97. case Keyboard.LEFT:
  98. tg.roll -= 2;
  99. break;
  100. }
  101. }
  102. }
  103. }

產出:



程式碼出處:http://www.flashsandy.org/tutorials/3.0/sandy_cs3_tut04

2009年7月13日 星期一

Kernel 與 initrd

Kernel 是作業系統的核心程式,所有的軟、硬體都是透過 kernel 做溝通的動作。若將一台安裝好的Linux電腦拆開來看,作業系統大致可以分成四個部份:軟體、shell、kernel 和硬體層。而與硬體關係最為密切的就是kernel,若有任何上層的軟體或指令需要使用到硬體的資源時,都必需要透過 kernel 才有辦法取得所需要的資源。


initrd (inital ramdisk) 是啟動系統所需要載入的檔案系統。下圖為 kernel 到 initrd 的流程圖。

kernel 會先在記憶體中製造一個 rootfs 當作臨時的空間供系統使用,然後將 initrd 當作是一個系統將其 mount 到 rootfs 上啟動。當 initrd 被載入後,必須做為 user 與 file system 的仲介,這需要有該檔案系統的模組及其他所有額外必須先被載入的模組,而此時提供適當的模組以讓開機流程繼續下去的就是 initrd。

在 initrd 中有以下幾個最要的觀念:
  • 目錄架構:
  • 當 kernel 啟動載入 initrd 時,並沒有任何系統的目錄架構,此時會先以 initrd 所提供的目錄當作是系統目錄。
  • dev 目錄:
  • dev 目錄中存在一些設備檔,當 initrd 被載入時,這些設備檔便可開始運作。
  • lib 目錄:
  • lib 目錄中存放了許多開機時所必須載入的模組。
  • init 檔:
  • initrd 中的script file,當 kernel 在讀取 initrd 時,會以此檔案的內容依序建立使用目錄及載入模所等所有大小事物。

    在 initrd 建立好相關的檔案系統配置後,便開始慢慢轉向到載入作業系統的部份,下圖為 initrd 轉移到作業系統各階段的任務與實際使用上的關聯性。



    越接近硬體的部份在愈下方,而作業系統是在最後才會被載入的,所以在最上面,而在操作作業系統時,大多是透過額外的機制去存取硬體,如:設備檔或sysfs等。因此,initrd 自然是從硬體層往上循序漸進,在將所有的硬體層部署完成後,以可以進入作業系統的部份。



    參考書目:邱世華.《Linux 作業系統之奧義》.稅知文化