|
ASSOC 顯示或修改關聯的副檔名。 AT 將命令或程式的執行加以排程。 ATTRIB 顯示或變更檔案屬性。 BREAK 設定或清除延伸的 CTRL+C 檢查。 CALL 呼叫其他的批次程式。 CACLS 顯示或修改檔案的存取控制清單 (ACL)。 CD 顯示目前的目錄名稱或目錄變更。 CHCP 顯示或設定字碼頁號碼。 CHDIR 顯示目前的目錄名稱或目錄變更。 CHKDSK 檢查磁碟並顯示磁碟狀態。 CLS 清除螢幕。 CMD 啟動新的 Windows 2000 指令直譯器例項。 COLOR 設定預設主控台背景及前景顏色。 COMP 比較兩個或兩組檔案的差異。 COMPACT 顯示或變更在 NTFS 磁碟分割上的檔案壓縮。 CONVERT 將 FAT 磁區轉換為 NTFS。您不能轉換使用中的磁區。 COPY 將檔案複製到其它位置。 DATE 顯示或設定日期。 DEL 刪除檔案。 DIR 顯示檔案清單或子目錄清單。 DISKCOMP 比較兩個磁片的差異 DISKCOPY 將磁片內容全部複製到另一張磁片。 DOSKEY 編輯命令列,重新呼叫 Windows 2000 命令,建立巨集。 ECHO 顯示訊息,啟動或關閉 echo 功能。 ENDLOCAL 中止在批次檔案中的地區設定變更。 ERASE 刪除檔案。 EXIT 結束 CMD.EXE 程式 (指令直譯器)。 FC 比較兩個或兩組檔案的差異,並顯示結果。 FIND 搜尋檔案中的文字或字串。 FINDSTR 搜尋檔案中的字串。 FOR 為一組檔案指定個別檔案的執行命令。 FORMAT 格式化磁片以供 Windows 2000 使用。 FTYPE 顯示或修改副檔名關聯的檔案類型。 GOTO 指示 Windows 2000 指令直譯器,跳到有標示的指令行執行。 GRAFTABL 讓 Windows 2000 在圖形介面能夠顯示擴充字元集。 HELP 提供 Windows 2000 指令的說明資訊。 IF 執行邏輯判斷式。 LABEL 建立,變更,或刪除磁碟標籤。 MD 建立目錄。 MKDIR 建立目錄。 MODE 設定系統裝置。 MORE 設定螢幕顯示一頁後暫停。 MOVE 將檔案從目前的位置移動到同一磁碟中的其他目錄。 PATH 顯示或設定執行檔的搜尋目錄。 PAUSE 暫停批次檔案處理並顯示訊息。 POPD 還原先前經由 PUSHD 儲存的的現用目錄設定值。 PRINT 列印文字檔案。 PROMPT 變更 Windows 2000 命令提示字元。 PUSHD 儲存現用目錄,然後修改它。 RD 移除目錄。 RECOVER 恢復損壞磁碟的唯讀資訊。 REM 批次檔或 CONFIG.SYS 中的備註標記。 REN 重新命名檔案。 RENAME 重新命名檔案。 REPLACE 取代檔案。 RMDIR 移除目錄。 SET 顯示,設定,或移除 Windows 2000 環境變數。 SETLOCAL 啟始批次檔中地區設定的變更。 SHIFT 移動批次檔中可取代參數的位置。 SORT 排序輸入項目。 START 啟動一個獨立的視窗以執行指定程式或命令。 SUBST 將路徑對應到磁碟代號。 TIME 顯示或設定系統時間。 TITLE 設定 CMD.EXE 工作階段的視窗標題。 TREE 以圖形顯示磁碟目錄結構。 TYPE 顯示文字檔的內容。 VER 顯示 Windows 2000 版本編號。 VERIFY 告訴 Windows 2000 是否要檢查檔案寫入磁碟的正確性。 VOL 顯示磁碟標籤及序號。 XCOPY 複製檔案及目錄結構。
D:\>attrib /? 顯示或變更檔案屬性。
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S [/D]]
+ 設定屬性。 - 清除屬性。 R 唯讀檔案屬性。 A 保存檔案屬性。 S 系統檔案屬性。 H 隱藏檔案屬性。 /S 處理目前的資料夾及所有子資料夾中相符的檔案。 /D 一併處理資料夾。 ============================================================ D:\>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"
如果您停用擴充指令,就必須輸入前一種指令。 ===========================================================
D:\>chkdsk /? 檢查磁碟並顯示狀態報告。
CHKDSK [磁碟機[[路徑]檔名]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:大小]]
volume 指定磁碟機代號 (後接冒號),連接點或磁碟區名稱。 filename 只能用在 FAT: 指定要進行分散程度檢查的檔案。 /F 修復磁片上的錯誤。 /V FAT/FAT32 模式: 顯示磁碟上每個檔案的完整路徑及名稱。 NTFS 模式: 如果有清除的訊息,也一併顯示。 /R 找出損壞的磁扇區並復原可讀取的資訊。(包含 /F)。 /L:size 只適用於 NTFS 模式: 將記錄檔大小變更為指定的 KB 數值。如果沒有指定記錄檔大小,就顯示目前的大小。 /X 如果必須的話,強制先解下磁碟區。所有在 磁碟區上開啟的控制代碼都會失效 (包含 /F)。 /I 只適用於 NTFS 模式: 不檢查索引項目。 /C 只適用於 NTFS 模式: 跳過資料夾結構的循環檢查。
使用 /I 或 /C 參數跳過某些磁碟區檢查,可以在執行Chkdsk 時減少檢查時間。 ========================================================= D:\>cls /? 清除螢幕。
CLS ========================================================= D:\>cmd /? 啟動 Windows 2000 指令直譯器新例項
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) 也等於使用了目錄完成功能。
如果您在路徑字串兩端加上引號,完成功能鍵就可正確處理包含空格或其他 特殊字元的檔案名稱。還有,如果您備份後,又在指令行中呼叫完成功能的 話,已呼叫過完成功能的指標右方的文字會被丟棄。 ===========================================================
D:\>comp /? 比較兩個檔案或兩組檔案的內容。
COMP [data1] [data2] [/D] [/A] [/L] [/N=number] [/C]
data1 指定第一個或第一組要比較的檔案的位置與檔名。 data2 指定第二個或第二組要比較的檔案的位置與檔名。 /D 以十進位格式來顯示不同之處。 /A 以 ASCII 字元來顯示不同之處。 /L 顯示不同之處的行號。 /N=number 只比較每個檔案中第一個指定的行號。 /C 比較檔案時忽略 ASCII 字母的大小寫。
要比較一組檔案,請在 data1 和 data2 參數中使用萬用字元。 =========================================================== D:\>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 格式)。 ========================================================= D:\>date /? 顯示或設定日期。
DATE [/T | date]
只鍵入 DATE 而不加上參數,可以顯示目前設定的日期,並且提示您輸入新 的日期。按 ENTER 鍵即可保持原來日期。
如果您啟用擴充指令,DATE 指令會支援 /T 參數,這個參數 會讓指令只輸出目前的日期,而不提示您輸入新日期。 =========================================================== D:\>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 參數的顯示方式完全相反,它只會顯示已刪除的檔案,不會顯示它找不 到的檔案。 ============================================================ D:\>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。 ===========================================================
D:\>doskey /? 編輯指令列,叫回 Windows 2000 指令,及建立巨集。
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。 $* 這個符號代表在指令行中巨集名稱後的所有文字。 ============================================================ D:\>echo /? 顯示訊息,或切換指令回應的開啟狀態。
ECHO [ON | OFF] ECHO [message]
僅鍵入 ECHO 而不加上參數,可以顯示目前的 ECHO 設定。
========================================================== D:\>exit /? 結束 CMD.EXE 程式 (指令直譯器) 或目前的批次檔。
EXIT [/B] [exitCode]
/B 指定這個參數來結束目前批次檔而不是 CMD.EXE。 如果是由批次檔之外執行,CMD.EXE將會結束。
exitCode 指定一個數字。如果指定 /B,則設定 ERRORLEVEL為這個 數字。如果結束 CMD.EXE,設定程序結束碼為這個數字。 ========================================================= D:\>fc /? 比較兩個檔案或兩組檔案並且顯示其中的不同之處
FC [/A] [/C] [/L] [/LBn] [/N] [/T] [/U] [/W] [/nnnn] [drive1:][path1]filename1 [drive2:][path2]filename2 FC /B [drive1:][path1]filename1 [drive2:][path2]filename2
/A 針對每組不同之處只要顯示其中的第一行和最後一行。 /B 使用二進位的內容比較。 /C 忽略字母的大小寫。 /L 以 ASCII 文字檔案方式來比較檔案。 /LBn 在指定的行數中設定容許的最多連續的檔案不相符。 /N 在 ASCII 方式的比較中顯示行數。 /T 不要將定位字元展開為空格。 /U 以 UNICODE 文字檔案方式來比較檔案。 /W 將空白字元 (定位字元和空格) 壓縮後再進行比較。 /nnnn 指定在一處不相同之後必須相同的連續行數。 ========================================================== D:\>find /? 搜尋檔案中的文字字串。
FIND [/V] [/C] [/N] [/I] "string" [[drive:][path]filename[ ...]]
/V 顯示所有不包含指定字串的行。 /C 只顯示包含字串的行數。 /N 顯示每一行及它的行號。 /I 當搜尋字串時,忽略字元的大小寫。 "string" 指定要尋找的文字字串。 [drive:][path]filename 指定要尋找的檔案。
如果沒有指定路徑,FIND 會搜尋在提示字元中所輸入的文字 或者在其它的命令中搜尋。 ============================================================ D:\>findstr /? 在檔案中搜尋字串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] [/C:string] [/G:file] [strings] [[drive:][path]filename[ ...]]
/B 如果是在行的開端,則符合類型。 /E 如果是在行的尾端,則符合類型。 /L 逐字使用搜尋字串。 /R 使用搜尋字串為一般表示式。 /S 在現存目錄及所有的子目錄中搜尋符合的檔案。 /I 指定搜尋不區分大小寫。 /X 列印完全符合的行數。 /V 只列印不含相符字串的行數。 /N 列印每一行符合的行數前的行編號。 /M 只列印包含相符字串的檔案的檔案名稱。 /O 列印每一個相符行之前的字元位移。 /P 略過沒有可列印字元的檔案 /F:file 從指定的檔案讀取檔案清單 (/ 代表主控台)。 /C:string 使用特定的字串作為逐字搜尋的字串。 /G:file 從指定的檔案取得搜尋字串(/ 代表主控台)。 strings 要搜尋的文字。 [drive:][path]filename 指定要搜尋的一個或多個檔案。
除非引數的字首有 /C ,否則請以空格將多重搜尋字串分開。例如, 'FINDSTR "hello there" x.y' 將會在檔案 x.y 中搜尋 "hello",或"there"。 'FINDSTR /C:"hello there" x.y' 將會在檔案 x.y 中搜尋"hello there"。
有關 FINDSTR 一般表示式的資訊,請參閱連線指令參照。 ========================================================== D:\>format /? 格式化磁片以供 Windows 2000 使用。
FORMAT 磁碟機 [/FS:檔案-系統] [/V:標籤] [/Q] [/A:大小] [/C] [/X] FORMAT 磁碟機 [/V:標籤] [/Q] [/F:大小] FORMAT 磁碟機 [/V:標籤] [/Q] [/T:磁軌 /N:磁扇區] FORMAT 磁碟機 [/V:標籤] [/Q] [/1] [/4] FORMAT volume [/Q] [/1] [/4] [/8]
volume 指定磁碟機代號 (後接冒號), 連接點或磁碟區名稱。 /FS:filesystem 指定檔案系統的類型 (FAT、FAT32 或 NTFS)。 /V:label 指定磁碟區標記。 /Q 執行快速格式化。 /C 建立在新磁碟區上的檔案會自動壓縮。 /X 視需要先將磁碟區解下。 所有在磁碟區上開啟的控制碼都不再是正確的。 /A:size 覆寫預設的配置單位大小。建議在一般使用時,最 好使用預設設定。 NTFS 支援 512, 1024, 2048, 4096, 8192, 16K, 32K, 64K。 FAT 支援 512, 1024, 2048, 4096, 8192, 16K, 32K, 64K, (128K, 256K 供磁碟區容量 > 512 位元組使用)。 FAT32 支援 512, 1024, 2048, 4096, 8192, 16K, 32K, 64K, (128K, 256K 供磁扇區容量 > 512 位元組使用)。
請注意 FAT 及 FAT32 檔案系統在磁碟區的叢集數目上 強制下列的限制:
FAT: 叢集數目 <= 65526 FAT32: 65526 < 叢集數目 < 268435446
如果格式化發現使用指定的叢集大小無法符合上面的要 求,格式化將會自動停止執行。
NTFS 壓縮不支援大小大於 4096 的配置單位。 /F:size 指定要格式化的軟碟大小 (160, 180, 320, 360, 640, 720, 1.2, 1.23, 1.44, 2.88, 或 20.. /T:tracks 為磁片各面指定磁軌數量。 /N:sectors 指定各條磁軌的磁碟區數量。 /1 格式化單面的軟式磁片。 /4 在高密度磁碟機內格式化 5.25 吋 360K軟式磁片。 /8 每條磁軌格式化八個磁碟區。 =========================================================== D:\>help /? 提供 Windows 2000 指令的說明訊息。
HELP [command]
command - 顯示該指令的說明訊息。 ===========================================================
D:\>md /? 建立目錄。
MKDIR [drive:]path MD [drive:]path
如果您啟用擴充指令,MKDIR 的變更如下:
必要時,MKDIR 會在目錄中建立一個中間目錄。 例如,假設 \a 不存在,則:
mkdir \a\b\c\d
相同於:
mkdir \a chdir \a mkdir b chdir b mkdir c chdir c mkdir d
如果擴充功能停用的話,您必須鍵入前一種指令類型。 ======================================================= D:\>mkdir /? 建立目錄。
MKDIR [drive:]path MD [drive:]path
如果您啟用擴充指令,MKDIR 的變更如下:
必要時,MKDIR 會在目錄中建立一個中間目錄。 例如,假設 \a 不存在,則:
mkdir \a\b\c\d
相同於:
mkdir \a chdir \a mkdir b chdir b mkdir c chdir c mkdir d
如果擴充功能停用的話,您必須鍵入前一種指令類型。 ===========================================================
D:\>more /? 以一次一頁螢幕的方式來顯示輸出。
MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [drive:][path]filename command-name | MORE [/E [/C] [/P] [/S] [/Tn] [+n]] MORE /E [/C] [/P] [/S] [/Tn] [+n] [files]
[drive:][path]filename 指定要顯示的檔案。檔案會以一次 一頁螢幕的方式顯示。
command-name 指定一個命令,而它的輸出將會以 一次一頁螢幕的方式顯示。
/E 啟用擴充功能。 /C 在顯示一頁之前先清除螢幕。 /P 展開 FormFeed 字元。 /S 將數個空白行顯示為一行。 /Tn 將定位字元展開為 n 個空白 (預設值為
MORE 環境變數中可以有指令選項
+n 在第 n 行開始顯示第一個檔案。
files 要顯示的檔案清單。在清單中的檔案用空格分開。
如果您使用了擴充功能,您可以在 -- 其它 --提示出現時,使用下列命令:
P n 顯示下面 n 行 S n 跳過下面 n 行 F 顯示下一個檔案 Q 結束 = 顯示行號 ? 顯示輔助說明行 顯示下一頁 顯示下一行 ======================================================== D:\>move /? 移動或更改檔案及目錄的名稱。
移動一個或一個以上的檔案: MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination
更改目錄名稱: MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2
[drive:][path]filename1 指定您要移動的檔案的位置與名稱。 destination 指定檔案的新位置。目的位置可以包含磁碟機字元 和冒號、目錄名稱、或是這些的組合。如果您只移 動一個檔案,您也可以包含檔名。這樣做會在移動 的同時更改檔名。 [drive:][path]dirname1 指定您要更改名稱的目錄。 dirname2 指定目錄的新名稱。
/Y 不要提示您是否要覆蓋一個現存的目的檔案。 /-Y 提示您是否要覆蓋一個現存的目的檔案。
參數 /Y 可能會在 COPYCMD 環境變數中預先設定。您可以在指令行中 使用 /-Y 來覆蓋預設值。預設值是除非 MOVE 命令是在批次檔中執行, 否則系統會提示您是否要覆寫現有檔案。 =========================================================== D:\>path /? 顯示或設定搜尋執行檔的路徑。
PATH [[drive:]path[;...][;%PATH%] PATH ;
鍵入 PATH ; 即可清除所有搜尋路徑的設定,並將 cmd.exe 重導為只搜尋 目前的目錄。鍵入 PATH 且不指定任何參數,可顯示目前的搜尋路徑。 在設定的新路徑中加上 %PATH%,可以將舊路徑附加到新的設定。 ===========================================================
D:\>rd /? 移除 (刪除) 一個目錄。
RMDIR [/S] [/Q] [drive:]path RD [/S] [/Q] [drive:]path
/S 除了目錄本身之外,一併移除指定目錄裡的所有目錄和檔案。 用於移除樹狀目錄結構。
/Q 安靜模式,有 /S 時,刪除目錄樹結構不再要求確認
============================================================ D:\>ren /? 更改檔案名稱。
RENAME [drive:][path]filename1 filename2. REN [drive:][path]filename1 filename2.
請注意您不能為目的檔案指定新的磁碟機或路徑。 ===========================================================
D:\>replace /? 取代檔案。
REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W] REPLACE [drive1:][path1]filename [drive2:][path2] [/P] [/R] [/S] [/W] [/U]
[drive1:][path1]filename 指定來源檔案。 [drive2:][path2] 指定要取代的檔案的目錄。 /A 將新檔案加到目地目錄。不能和 /S 或 /U 參數同時使用。 /P 當取代檔案或新增來源檔案時顯示確 認的提示。 /R 取代唯讀與未受保護的檔案。 /S 取代在目的目錄中所有子目錄的檔案。不能 和 /A 參數同時使用。 /W 在開始前等待您放入磁片。 /U 只取代 (更新) 比來源檔案早 的檔案。不能和 /A 參數同時使用。 ============================================================
D:\>time /? 顯示或設定系統時間。
TIME [/T | time]
僅鍵入 TIME 而不加上參數,可以顯示目前設定的時間,並且提示您輸入 新的時間。按 ENTER 鍵即可保持原來時間。
如果您啟用擴充指令,TIME 指令將會支援/T 參數,這個參數 會讓指令只輸出目前的時間,而不提示您輸入新時間。 ============================================================== D:\>tree /? 以圖形顯示磁碟機或路徑的資料夾架構。
TREE [drive:][path] [/F] [/A]
/F 顯示各資料夾中檔案的名稱。 /A 使用 ASCII 取代延伸字元。 ============================================================ D:\>type /? 顯示文字檔案的內容。
TYPE [drive:][path]filename ============================================================ D:\>ver /? 顯示 Windows 2000 版本。
VER ============================================================ D:\>vol /? 顯示磁碟區標籤和序號 (若有的話)。
VOL [drive:] ============================================================= D:\>xcopy /? 複製檔案和樹狀目錄。
XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]\r\n [/EXCLUDE:file1[+file2][+file3]...]
source 指定要複製的檔案。 destination 指定位置或者/以及新檔案的名稱。 /A 只複製設定成保存屬性的檔案,不要改變屬性的設定。 /M 只複製設定成保存屬性的檔案,並清除保存屬性。 /D:m-d-y 複製在指定日期當天或之後發生變更的檔案。如果沒有給日 期,只複製那些來源檔案日期比目的檔案日期為新的檔案。 /EXCLUDE:file1[+file2][+file3]... 指定檔案清單字串。如果有字串對應到要進行複製的檔案 絕對路徑的任何部分,這個檔案會被排除複製。例如,指定 字串\obj\ 或 .obj 的話,會排除所有在 obj 目錄下副檔名是 .obj 的檔案複製。 /P 在建立每個目的檔案時顯示提示。 /S 複製每個目錄及其包含的子目錄,不複製空目錄。 /E 複製每個目錄及其包含的子目錄,也複製空目錄。/S 與 /E 相同,能夠用來修改 /T。 /V 驗證每個新檔案。 /W 在複製之前提示您按鍵繼續。 /C 如果錯誤發生時也繼續複製。 /I 如果目的不存在且複製一個以上的檔案的話,就假設指定的 目的一定是目錄。 /Q 在複製時不要顯示檔名。 /F 在複製時顯示來源及目的檔案的全部檔名。 /L 顯示要複製的檔案。 /H 時複製隱藏檔和系統檔。 /R 覆蓋唯讀檔案。 /T 建立目錄結構,但不複製其中的檔案。不包括空目錄及子目 錄。/T /E 會包括空目錄及子目錄。 /U 只複製已經存在目的位置的檔案。 /K 複製檔案屬性。通常 Xcopy 會重設唯讀的屬性。 /N 用所產生的短檔名來進行複製。 /O 複製檔案所有權及 ACL 資訊。 /X 複製檔案審查設定 (包含 /O)。 /Y 不要提示您確認是否要覆蓋一個已經存在的檔案。 /-Y 示您確認是否要覆蓋一個已經存在的檔案。 /Z 在可重新開始的模式中複製網路檔案。
參數 /Y 可以在 COPYCMD 環境變數中預先設定。但可以在指令行中用 /-Y 參數來覆蓋原有設定。
|
|
| |
想必曾為別人組裝電腦的人都有這個苦惱,就是裝好的電腦沒多久就因為 初學者的"蹂躪",把硬碟弄得大亂, Windows 95 / 98 的設定也一蹋糊塗, 一會兒印表機不能用啦,一會兒音效卡沒聲音啦,三天兩次要你去"修理", 實在煩不勝煩!
但有一個軟體可以做到快速備份及還原的功用,它就是 Ghost。Ghost 這個軟體的 出現也有一段時間了,它可以把一整顆硬碟或是其分割區,做成一個映像檔,您也 可以選擇要不要壓縮。而靠著這個映像檔,您就可以在幾分鐘內把硬碟恢復為原狀 ,就好像市面上常見的"還原卡"廣告一樣。當然,在製作完硬碟備份映像檔之後才 新增到硬碟裡的檔案,都會在還原硬碟之後消失不見,這一點必須注意,要告訴使 用者記得在還原硬碟之前備份重要檔案。
所以,如果能做一張可以開機的光碟,並且裡面有硬碟的映像檔,那麼,讓使用者 自己把硬碟恢復原狀,就容易多了。因為 Ghost 軟體就像 Rar 一樣,可以用圖形 介面,也可以用命令列,所以只要把開機的 Autoexec.bat 批次檔設計好,那麼 就只須把開機光碟放進光碟機,其它就不用麻煩使用者了,這不是挺理想的嗎? 就算中毒,或是不小心 Format 了硬碟,或是任何非硬體上的破壞,這張"還原 光碟"都可以在幾分鐘之內把它還原!
Ghost 軟體的網頁是在:www.ghost.com。 您可以去下載升級檔或是展示檔,不過它會要您先填一些資料, 然後再用 E-mail 寄給你解檔的密碼。以下是一些使用提示:
使用 Ghost 時,不能在 Windows 95 / 98 下的 DOS 視窗下執行,必須在純 DOS 下才行,你可以在開機時按 F8,選 "Command Prompt Only" 即可,或是用軟碟開機。開機的設定不要掛太多東西。 (參考: 若是用 ghost 5.x 版, 在 Windows 的 DOS 視窗下使用好像也沒什麼問題。 我已經用過很多次了。)
基本的用法簡單的說,就是 Dump 及 Load, 可以選一整塊硬碟或硬碟的一個或數個分割區。Dump 就是由硬碟變成映像檔,Load 就是把映像檔還原成硬碟。
經過壓縮,一顆 1.2 GB 的硬碟也許只有幾百 MB 而已,放 在 CD 內應該沒有問題。
Image 檔還可以分片 (像 arj 那樣)。不過要 5.x 版以後的才行。 在 DOS 狀態下打 ghost -split=650 啟動該程式。 表示以 650 MB 為單位分 割 Image 檔。如果想啟動程式後再設定, 可能不行。所以一定要 打 ghost -split=650 啟動該程式。(當然您要設定以多少 MB 來分割都可以。 指令就是 "ghost -split=數字", 如果不知道指令可以打 ghost -h )
製作時到了您所設定的大小時, 會叫您換片或更改檔名, 然後繼續製造第二個檔案。
然後燒成 CD。
還原時一樣, 到了第一個檔案結尾時, 會叫您輸入下一個檔案的檔名, 或者換下 一片 CD. 這裡要注意, 剛換 CD 不要馬上按 Enter 繼續, 因為光碟機會等個幾秒 才能讀完 CD 的 TOC, 所以馬上按 Enter 的話會出現找不到檔案的錯誤訊息, 因為 光碟機尚未 ready. 這樣就會前功盡棄, 必須重頭再開始還原了 (不知道以後的版本會不會 加入 Retry 的功能, 不要馬上宣告失敗)
使用 Ghost 不必先對硬碟做 Fdisk 或 format。 例如:原本是 Fat 16,三個分割區,而 映像檔假如是 Fat 32, 一個分割區,那麼 Load 此映像檔到此硬碟之後,自動變成 Fat 32 及一個分割區,而且硬碟也自動重整了。(兩顆硬碟必須容量相同)
Ghost 可以也可以改變目的 硬碟分割區的大小, 但需進入 ghost 使用介面,不能由 dos 下批次指令。 這一點是很有用處的,例設你的硬碟原本有兩個分割區,一個是 500 MB, 另一個是 300 MB,假設 500 MB 那個是 C: 碟,現在因為安裝太多東西, 快滿了,而你又不想把新的軟體裝在其他分割區,那麼就可以用 ghost 先把 一整個硬碟 dump 成映象檔,然後在 load 回來時,把分割區改為 600 MB 及 200 MB (原先在 300 MB 分割區的資料不能超過這個大小 ),這樣就能在不 干擾原先硬碟資料的情況下把分割區改變了!
硬碟有安裝 OS/2 的 Boot Manager 時, 因為所控制的 Boot Partition 大小已 設定在 Boot Manager 裡面,在 disk to disk 還原時 若 source 及 target 硬碟大小不同, 會有問題。 或者是硬碟已經過壓縮的, 也不能還原至不同大小的硬碟,因為壓縮軟體 所設定的硬碟大小也是固定的。
最好盡量用 Partition 的備份及還原, 即 partition to file , partition to partition, file to partition, 不要用 disk to file ,disk to disk, file to partition, 除非兩顆硬碟完全一樣。 用整顆硬碟 (disk) 為單位的備份及還原時, 若把硬碟 A 的 Image 檔還原至大小不同的硬碟 B, 恐怕會有問題. 而用 Partition 為 Source 或 Target 的話, 把 Image 檔還原至大小不同的硬碟分割區就沒問題了。
即使一顆硬碟只有一個 partition, 也要用以 partition 為基礎的備份及還原。 這樣子 300 mb 的 image 檔也可以還原至 600 mb 的硬碟了。
ghost 已被賽門鐵克 (symantec) 所併購, 從 5.0e 起就掛上賽門鐵克的抬頭了, 並且, 提供了 ghostexp 這隻程式, 可將已做好的 image 檔 (新的副檔名為gho)中的 某一個目錄或檔案 restore 回來, 再不用將 image -->disk 後, 才能 copy 其中的某 些資料. 就好像 winzip 可以只解壓某一部份的檔案一樣.
還原時所打的命令列,您可以參考說明檔, 您可以看看指令的設定方法. 新版的指令可能會跟舊版不同, 使用時先讀一下新版的 Switches.txt. 這邊舉幾個跟製作還原光碟有關的指令:
--------------------------------------------------------------------------------
ghost.exe -sure -rb -clone,mode=load,src=e:savdsk.img,dst=1 -sure 表示對所有問題回答 Yes. 如果您要在還原時有考慮餘地, 那就不要加此參數. -rb 表示完成後自動重開機.
-clone,mode=load,src=e:savdsk.img,dst=1 表示把 e:savdsk.img 這個 image 檔還原到第一顆硬碟上. 這是以一整顆硬碟為單位,
--------------------------------------------------------------------------------
ghost.exe -sure -rb -clone,mode=pload,src=g:\img.gho:1,dst=1:1 -clone,mode=pload,src=g:\img.gho:1,dst=1:1 表示把 g:\img.gho 這個 Image 檔中, 第一個 partition 的部份, 還原到第一顆硬碟的第一個 partition .
注意 "pload" , "src=g:\img.gho:1", "dst=1:1" 這些參數的打法.
"pload" 表示 load partition from image. 若只有 "load" 不加 p 表示 load disk from image.
--------------------------------------------------------------------------------
ghost -clone,mode=load,src=g:\2prt.img,dst=1,sze1=60P,sze2=40P 假設 g:\2prt.img 這個 Image 檔中, 包含有兩個 partition, 現在要把它 load 到第一顆硬碟 上, 並且要讓第一個分割區佔這顆硬碟容量的 60 %, 讓第二個分割區佔 40 %.
-------------------------------------------------------------------------------- 其它指令請自行研讀 Switches.txt. 您可以用模擬軟碟開機的方式製作開機光碟,然後把硬碟檔也放在裡面,ghost.exe 放在開機軟碟映像檔裡面,開機後 CONFIG.SYS 要掛光碟機驅動程式,然後寫一個 AUTOEXEC.BAT,假設把光碟機代號設為 Z (用 /L: 參數可指定光碟機 代號,代號可以隨您設定,如 /L:Z 表示指定為 Z: . 另 CONFIG.SYS 裡面要加 上 lastdrive=Z 的設定) ,然後執行 ghost 命令列.
不過您也不一定要用光碟開機, 用軟碟開機再去讀光碟裡的 Ghost Image 檔也 會有同樣的效果. 只是用光碟開機就不怕軟碟以後會發霉壞掉的問題了.
以下是一個範例:(請再自行修改)
Config.sys
device=himem.sys /testmem:off device=emm386.exe ram device=teac_cdi.sys /d:mscd001 lastdrive=Z (其它自己設定)
--------------------------------------------------------------------------- Autoexec.bat
@echo off mscdex /d:mscd001 /l:z cls echo Now, all the current datas of your hard disk will be wiped out, echo and I will restore it to its original file and directory structure echo constructed on xx-xx-1997. Please backup the important files you echo made after xx-xx-1997 to floppy disks, then do this restoration! echo. echo Are you ready? If NOT ready, please press CTRL + C to exit, echo if ready, then pause echo. echo This is your last chance to go back. pause ghost.exe -sure -rb -clone,mode=load,src=z:\hdbak.gho,dst=1
以上提到的 Ghost 的問題或限制, 可能會在較新的版本有改善也說不定. 所以本文 所說的只能做為參考.
如果您對 Ghost 軟體的其它功能有些心得的話,也不妨來信,提供給大家參考。
|
|
| |
DEBUG是為彙編語系設計的一種高度工具,它通過單步、設定斷點等模式為彙編語系程式員提供了非常有效的除錯手段。 一、DEBUG程式的呼叫 在DOS的提示符下,可鍵入指令: C:\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2] 其中,檔案名是被除錯檔案的名字。如使用者鍵入檔案,則DEBUG將特殊的檔案裝入存儲器中,使用者可對其進行除錯。若果未鍵入檔案名,則使用者可以用目前存儲器的內容工作,或是用DEBUG指令N和L把需要的檔案裝入存儲器後再進行除錯。指令中的D指定磁碟機PATH為路徑,PARM1和PARM2則為執行被除錯檔案時所需要的指令參數。 在DEBUG程式調入後,將出現提示符,此時就可用DEBUG指令來除錯程式。 二、DEBUG的主要指令 1、顯示存儲單元的指令D(DUMP),格式為: _D[address]或_D[range] 例如,按指定範圍顯示存儲單元內容的方法為: -d100 120 18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G... 18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW. 7 18E4:0120 8B 其中0100至0120是DEBUG顯示的單元內容,左邊用十六進位表示每個位元群組,右邊用ASCII字元表示每個位元群組,·表示不可顯示的字元。這裡沒有指定段位址,D指令自動顯示DS段的內容。若果只指定首位址,則顯示從首位址開始的80個位元群組的內容。若果完全沒有指定位址,則顯示上一個D指令顯示的最後一個單元後的內容。 2、修改存儲單元內容的指令有兩種。 ·輸入指令E(ENTER),有兩種格式如下:第一種格式可以用給定的內容表來替代指定範圍的存儲單元內容。指令格式為: -E address [list] 例如,-E DS:100 F3'XYZ'8D 其中F3,'X','Y','Z'和各佔一個位元群組,該指令可以用這五個位元群組來替代存儲單元DS:0100到0104的原先的內容。 第二種格式則是採用逐個單元相繼修改的方法。指令格式為: -E address 例如,-E DS:100 則可能顯示為: 18E4:0100 89.- 若果需要把該單元的內容修改為78,則使用者可以直接鍵入78,再按"空格"鍵可接著顯示下一個單元的內容,如下: 18E4:0100 89.78 1B.- 這樣,使用者可以不斷修改相繼單元的內容,直到用ENTER鍵結束該指令為止。 ·填寫指令F(FILL),其格式為: -F range list 例如:-F 4BA:0100 5 F3'XYZ'8D 使04BA:0100~0104單元內含特殊的五個位元群組的內容。若果list中的位元群組數超過特殊的範圍,則忽略超過的項;若果list的位元群組數小於特殊的範圍,則重複使用list填入,直到填滿特殊的所有單元為止。 3)檢查和修改寄存器內容的指令R(register),它有三種格式如下: ·顯示CPU內所有寄存器內容和標誌位狀態,其格式為: -R 例如,-r AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC 18E4:0100 C70604023801 MOV WORD PTR [0204],0138 DS:0204=0000 ·顯示和修改某個寄存器內容,其格式為: -R register name 例如,鍵入 -R AX 系統將響應如下: AX F1F4 : 即AX寄存器的目前內容為F1F4,如不修改則按ENTER鍵,否則,可鍵入欲修改的內容,如:
-R bx BX 0369 :059F 則把BX寄存器的內容修改為059F。 ·顯示和修改標誌位狀態,指令格式為: -RF系統將響應,如: OV DN EI NG ZR AC PE CY- 此時,如不修改其內容可按ENTER鍵,否則,可鍵入欲修改的內容,如: OV DN EI NG ZR AC PE CY-PONZDINV 即可,可見鍵入的順序可以是任意的。 4)執行指令G,其格式為: -G[=address1][address2[address3…]] 其中,位址1指定了執行的起始位址,如不指定則從目前的CS:IP開始執行。後面的位址均為斷點位址,當指令執行到斷點時,就停止執行並顯示目前所有寄存器及標誌位的內容,和下一筆將要執行的指令。 5)追蹤指令T(Trace),有兩種格式: ·逐條指令追蹤 -T [=address] 從指定位址起執行一條指令後停下來,顯示所有寄存器內容及標誌位的值。如未指定位址則從目前的CS:IP開始執行。 ·多條指令追蹤 -T [=address][value] 從指定位址起執行n條指令後停下來,n由value指定。 6)彙編指令A(Assemble),其格式為: -A[address] 該指令容許鍵入彙編語系語句,並能把它們彙編成機器代碼,相繼地存放在從指定位址開始的存儲區中。必須注意:DEBUG把鍵入的數字均看成十六進位數,所以如要鍵入十進位數,則其後應加以說明,如100D。 7)反彙編指令U(Unassemble)有兩種格式。 ·從指定位址開始,反彙編32個位元群組,其格式為: -U[address] 例如: -u100 18E4:0100 C70604023801 MOV WORD PTR[0204],0138 18E4:0106 C70606020002 MOV WORD PTR[0206],0200 18E4:010C C70606020202 MOV WORD PTR[0208],0202 18E4:0112 BBO4O2 MOV BX,0204 18E4:0115 E80200 CALL 011A 18E4:0118 CD20 INT 20 18E4:011A 50 PUSH AX 18E4:011B 51 PUSH CX 18E4:011C 56 PUSH SI 18E4:011D 57 PUSH DI 18E4:011E 8B37 MOV SI,[BX] 若果位址被省略,則從上一個U指令的最後一條指令的下一個單元開始顯示32個位元群組。 ·對指定範圍內的存儲單元進行反彙編,格式為: -U[range] 例如: -u100 10c 18E4:0100 C70604023801 MOV WORD PTR[0204],0138 18E4:0106 C70606020002 MOV WORD PTR[0206],0200 18E4:010C C70606020202 MOV WORD PTR[0208],0202 或 -u100 112 18E4:0100 C70604023801 MOV WORD PTR[0204],0138 18E4:0106 C70606020002 MOV WORD PTR[0206],0200 18E4:010C C70606020202 MOV WORD PTR[0208],0202
可見這兩種格式是等效的。 8)命名指令N(Name),其格式為: -N filespecs [filespecs] 指令把兩個檔案標識符格式化在CS:5CH和CS:6CH的兩個檔案控制塊中,以便在其後用L或W指令把檔案裝入存盤。filespecs的格式可以是: [d:][path] filename[.ext] 例如, -N myprog -L - 可把檔案myprog裝入存儲器。
2004-5-26 09:44
IceMe 正式會員
積分 170 發貼 305 註冊 2004-3-15 來自 紫色星雲 狀態 離線 9)裝入指令(Load),有兩種功能。 ·把磁碟上指定扇區範圍的內容裝入到存儲器從指定位址開始的區域中。其格式為: -L[address[drive sector sector] ·裝入指定檔案,其格式為: -L[address] 此指令裝入已在CS:5CH中格式化了檔案控制塊所特殊的檔案。如未指定位址,則裝入CS:0100開始的存儲區中。 10)寫指令W(Write),有兩種功能。 ·把資料寫入磁碟的指定扇區。其格式為: -W address drive sector sector ·把資料寫入特殊的檔案中。其格式為: -W[address] 此指令把特殊的存儲區中的資料寫入由CS:5CH處的檔案控制塊所特殊的檔案中。如未指定位址則資料從CS:0100開始。要寫入檔案的位元群組數應先放入BX和CX中。 11)離開DEBUG指令Q(Quit),其格式為: -Q 它離開DEBUG,返回DOS。本指令並無存盤功能,如需存盤應先使用W指令。
問題:初學者問一個低級問題,執行debug-a後,若果有一行輸入錯誤,如何變更這一行?
回答: 加入進行如下輸入: D:\PWIN95\Desktop>debug -a 2129:0100movax,200 2129:0103movbx,200 2129:0106movcx,200 2129:0109 此時,發現movbx,200一句錯誤,應為movbx,20,可以敲Enter返回"-"狀態,然後輸入: -a103 2129:0103movbx,20 若果多或是少若干行,不必重新輸入,可以用M指令移動後面的程式來去掉或是增加程式空間。
如何除錯和彙編你的第一個PC x86彙編語系程式呢?
以下這些簡單的解釋可以讓一個彙編語系新手使用DEBUG:
0)在使用時,如何快速獲得debug的使用幫助呢。 1)讓我們開始工作吧,例如:顯示BIOS的日期。 2)在你的電腦的COMMANG.COM檔案裡搜尋"IBM"這幾個字元。 3) 一位十六進位數的運算。 4) 檢查 x86寄存器內容。 5)我們來編寫我們的第一個用機械語系編寫的程式-列印一個字元。 6) 我們現在用彙編語系指令來做和例5一樣的事情。 7)現在,我們不但要編寫一個彙寫程式式,而且我們還要把它存盤。 8) 現在,我們試一試檢視一個已經編好的程式。 9)你可以用DEBUG的計算功能計算程式的長度。 10)另一種顯示在螢幕上字串的方法。 11)讓我們試一試反覆輸出。 12)我們現在把兩個程式連線起來。 13) 讓我們逐步執行這個剛剛修補的程式。 14)若果一開始的指令不是跳轉指令,那麼可能就要用這種方法了。
以下所有的指令都是可以執行在WIN9x的MS-DOS模式下的。 進入MS-DOS的模式有: [開始][程式][MS-DOS模式]
[開始][執行][開啟]COMMAND[確定]
或是你可以按兩下它: C:\Windows\Command.com
0)在使用時,如何快速獲得debug的使用幫助呢 以下PROMPT>表示目錄提示符:一般為:C:\WINDOWS\COMMAND\ PROMPT> DEBUG /?<按Enterpress the enter key now> 怎樣?出錯了吧。顯示如下 C:\WINDOWS>DEBUG/? Runs Debug, a program testing and editing tool.
DEBUG [[drive:][path]filename [testfile-parameters]]
[drive:][path]filename Specifies the file you want to test. testfile-parameters Specifies command-line information required by the file you want to test.
After Debug starts, type ? to display a list of debugging commands. 因為錯了所以它給你顯示一些提示。留意到最後一句了嗎?
現在我們再來試一試: PROMPT> DEBUG<按Enter> (注意, DEBUG程式的指令是在一條橫線"-"後出現的。) -?<在出現的橫線後面輸入?再Enter> (下面的內容是按字母順序排序的) (注意:Note: Don't type the dash or comments -- just the ?) 顯示如下,但是沒有中文的哦,中文是我加上去的。
彙編assemble A [address] 比較compare C range address 傾倒dump D [range] 進入enter E address [list] 填充fill F range list 進行go G [=address] [addresses] 十六進位hex H value1 value2 輸入input I port 裝載load L [address] [drive] [firstsector] [number] 移動move M range address 命名name N [pathname] [arglist] 輸出output O port byte 進行proceed P [=address] [number] 離開quit Q 紀錄register R [register] 搜尋search S range list 描述trace T [=address] [value] 反彙編unassemble U [range] 寫write W [address] [drive] [firstsector] [number] 分配延伸記憶體allocate expanded memory XA [#pages] 釋放延伸記憶體deallocate expanded memory XD [handle] map expanded memory pages XM [Lpage] [Ppage] [handle] display expanded memory status XS -q<按Enter> (這是離開DEBUG回到DOS狀態)This quits out of debug, returning to the DOS prompt)
Tested examples below walk the user thru the following debug examples: 在下面的例子裡讀者必須明白以下幾條DEBUG指令。 -D 顯示一定範圍記憶體的內容Display the contents of an area of memory -Q 離開DEBUG程式Quit the debug program -S 搜尋Search for whatever -H 十六進位的運算Hex arithmatic -R 顯示或是改變一個或是多個寄存器的內容Display or change the contents of one or more registers -E 輸入資料進入記憶體,在一個詳細的位址裡Enter data into memory, beginning at a specific location -G 執行現在在記憶體裡的程式。Go run the executable program in memory -U 反彙編,把我們不認識的機械代碼變為我們可以認識彙編語系符號Unassemble machine code into symbolic code -T 描述一條指令的用法。 Trace the contents of one instruction -P 進行或是執行一個關聯的指令Proceed, or execute a set of related instructions -A 編譯,把彙編指令變為機械代碼Assemble symbolic instructions into machine code -N 命名一個程式Name a program -W 把一個已經命名的程式寫進磁碟Write the named program onto disk -L 把程式裝載進記憶體Load the named program back into memory
返回目錄
1)讓我們開始工作吧,例如:顯示BIOS的日期 (以下PROMPT>表示目錄提示符:一般為:C:\WINDOWS\COMMAND\)
PROMPT> DEBUG<按Enter> -D FFFF:0006 L 8<按Enter> (顯示 FFFFh, 偏移位址 6h, 長度 8 bytes) 在作者的電腦上這裡顯示為 "1/10/96." 譯者的電腦顯示" FFFF:0000 37 2F-30 36 2F 30 30 00 7/06/00."相信作者的電腦裡也是用這種格式顯示的。這裡顯示出來的是使用者BIOS的日期,有興趣的話可以重新開機看看,注意開機時的顯示。 -Q<按Enter> (離開DEBUG)
思考:當只按DEBUG的時候,編輯的是什麼?為什麼可以找到BIOS的日期?(譯者這裡也不是很清楚所以請大家知道的也留言給斑竹,改正。譯者認為可能是記憶體的真實物理位址。)
返回目錄
2)在你的電腦的COMMANG.COM檔案裡搜尋"IBM"這幾個字元 下面的"C:\Win95\"是根據每不電腦不同的。像譯者的電腦裡就是"C:\WINDOWS"
PROMPT> DEBUG C:\Win95\Command.com<按Enter> -S 0 L FFFF "IBM"<按Enter>(從0開始搜尋"IBM",搜尋FFFFh多個單元格) -Q<按Enter> (離開DEBUG)
以下是譯者做的:
C:\WINDOWS>DEBUG C:\WINDOWS\COMMAND.COM -S 0 L FFFF "IBM" -S 0 L FFFF "COMMAND" 12A7:008D 12A7:04F7 12A7:3870 12A7:38BE 12A7:38DD -S 0 L FFFF "PATH" 12A7:38AD 12A7:CCB7 12A7:CF55 -S 0 L FFFF "COMSPEC" 12A7:38D4 12A7:3A4D 12A7:CCC4 -Q
C:\WINDOWS>
(注意:搜尋是要區分大小寫的) (你可以看到上面是沒有找到"IBM"的, 可以試一試"PATH" , "COMSPEC" , "COMMAND") (注意: 這種方法用在尋找加密資料和已被移除的資料等方面時是十分有用的)
返回目錄
3) 一位十六進位數的運算:
PROMPT> DEBUG<按Enter> -H 9 1<按Enter> (加減兩個十六進位的數, 9h+1h=Ah & 9h-1h=8h) 結果是顯示: 000A 0008 -Q<按Enter> (離開DEBUG)
C:\WINDOWS> debug -h 9 1 000A 0008 -q C:\WINDOWS>
返回目錄
4) 檢查x86寄存器內容
PROMPT> DEBUG<按Enter> -R<按Enter> (顯示x86寄存器內容) -Q<按Enter> (離開DEBUG)
C:\WINDOWS>debug -R AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=127C ES=127C SS=127C CS=127C IP=0100 NV UP EI PL NZ NA PO NC 127C:0100 043C ADD AL,3C -Q
下面是對寄存器的簡單介紹:
資料存儲器 在本類中,一般講的AH就是AX的前八位,AL就是AX的後八位,後面的以此類推。 AX Accumulator;作為累加器,所以它是算術運算的主要寄存器。另外所有的I/O指令都使用這一寄存器與外部裝置傳輸訊息。 BX Base register;可以作為通用寄存器使用,此外在計算存儲器位址時,它經常用作基位址寄存器。 CX Counting register;可以作為通用寄存器使用,此外在循環(LOOP)和串處理指令中作隱含的計數器。 DX Data register;可以作為通用寄存器使用,一般在作雙字長運算時,把DX和AX群群組合在一起存放一個雙字長數,DX用來存放高位字。此外,對某些I/O動作,DX可用來存放I/O的連線埠位址。
指標及變址寄存器 BP Base pointers register ;機制指標寄存器 SI Source index register ;堆棧指標寄存器 DI Destiny index register ;目的變址寄存器 SP Battery pointer register ;堆棧指標寄存器
段寄存器 CS Code segment register ;代碼段寄存器,存放正在執行的程式指令 DS Data segment register ;資料段寄存器,存放目前執行程式所用的資料 SS Battery segment register ;堆棧段寄存器,定義了堆棧所在區域 ES Extra segment register ;附加段寄存器,存放附加的資料,是一個輔助性的資料區,
控制寄存器 IP Next instruction pointer register;指令指標寄存器,它用來存放代碼段中的偏移位址,在程式執行的過程中,它始終指向下一筆指令的首位址,它與CS寄存器聯用確定下一筆指令的物理位址 F Flag register;標誌寄存器 "NV UP EI PL NZ NA PO NC"就是了,也有人稱之為PSW Program Status Wold程式狀態寄存器
(這裡有一點必須講明白的現在在,其實從奔騰開始這些寄存器(除了所有段寄存器,標誌寄存器 )都是32位的。並且加多了兩個16位段寄存器FS,GS。dos下面看到這些寄存器是16位的。要看32位寄存器可以使用soft-ice。對於FS,GS的作用我也不是很清楚,希望有高手指點,謝謝。)
返回目錄
2004-5-26 09:45
IceMe 正式會員
積分 170 發貼 305 註冊 2004-3-15 來自 紫色星雲 狀態 離線 5)我們來編寫我們的第一個用機械語系編寫的程式-列印一個字元 (這裡用機械語系的主要原因是考慮到有一些使用者不懂彙編指令,現在就要讓他有一個認識電腦程式實質是一些數字)
PROMPT> DEBUG<按Enter> -E 100<按Enter> (在偏移位址為100的地方輸入機械指令程式) B4<按空格>02<按空格> (在AX寄存器的前八位存入02) B2<按空格>41<按空格> (在DX寄存器的後八位存入41h,41h就是大寫A的ASCII碼,身邊有ASCII表的朋友可以對著表改改數字試一試) CD<按空格>21<按空格> (當AH=02時這是DOS顯示輸出的中斷號) CD<按空格>20<按Enter> (離開DOS) -G<按Enter> (程式執行,並在螢幕上顯示出"A") 程式執行完以後你將看到"Program terminated normally"(程式標準結束了). -U 100<按Enter> (我們把它反彙編,就是把機械指令變為彙編語系指令) 107F:0100 B402 MOV AH,02 :0102 B2 MOV DL,41 :0104 CD21 INT 21 :0106 CD20 INT 20 (下面會有一堆無用的東西) (對了,你的段位址可能與我的段位址CS=107F不同哦) -R<按Enter> (讓我們來看看寄存器的值; IP==100h, AX==0000h, DX==0000h) 好極了,我們看到電腦又做好了準備下一次執行程式了。 -T<按Enter> (執行第一步動作... IP=>102h, AX=>0200h,指令指標寄存器指向下一筆指令,AX的值被改變。 -T<按Enter> (執行第二步動作... IP=&
- 今日人數:0
- 累計人數:2973
- 發表文章:28
- 相片數量:0
- 回應數量:0
|