dos命令詳解筆記

http://www.dirtysea.com/forum.php?mod=viewthread&tid=785&extra=

一、入門與概述
1.文件與目錄
文件名:文件基本名+後綴
文件基本名:1-8個字符,對於文件名必須存在;後綴0-3個字符,可有可無。
目錄:在Windows中稱作“文件夾”。
用DIR顯示時,後面跟有[dir]標誌,表明它們是目錄。
2.exe:可執行文件
com:命令文件
bat:批處理文件
它們都被稱作“可執行文件”。
Bat後綴的文件優先級高於以exe和com爲後綴的文件
3.DOS內部命令和外部命令
內部命令是由command.com隨系統啓動直接加載到內存中去的,可直接使用。
換句話說,內部命令存在於command.com文件中。
外部命令是一個個獨立的文件,存在於磁盤中,需要時可調入內存執行。
4..和..與\
. :當前目錄
.. :當前目錄的上一級目錄,也稱“父目錄”
\ :根目錄。
5.Dir命令
當前目錄存在.和..時,用dir命令顯示當前目錄信息時,它們被認爲是一個文件,只是大小爲零。
6、DOS啓動順序
啓動——》IO.SYS——》MSDOS.SYS——》CONFIG.SYS——》COMMAND.COM——》Autoexec.bat
其中,IO.SYS、MSDOS.SYS、COMMAND.COM對於DOS系統的啓動必不可少。
io.sys  : 輸入輸出處理程序
Msdos.sys  :文件處理程序
Command.com  :命令處理程序
新解:
對於DOS,硬盤啓動時首先有INT19中斷來讀取“硬盤MBR”,讀到後將MBR讀到內存0000:007c,接着INT19也跳到內存中0000:007c,此時的控制權還是INT19,接着在MBR中“有一個程序”會尋找“可引導的分區”,找到後將引導分區讀到0000:007c,這時MBR程序就會跳到0000:007c這個地址上,系統開始啓動了。
主引導扇區是:0柱0磁頭1扇區
之後就是FAT(文件分配表)了
補充(2007-12-10)
。DOS  :disk operating system,單用戶單任務OS。
冷啓動 :開機時,打開顯示器電源-》主機電源,關機時順序相反
熱啓動 :系統啓動時,按CTRL+ALT+DEL組合鍵再次啓動系統
二者區別 :是否跳過內存檢測等一些硬件檢測過程,其它運行過程相同
。DOS常用保留名
CON :鍵盤\顯示器
NUL :空設備或虛擬設備
AUX/COM1 :第一串行通信接口
COM2\COM3\COM4 :第2、3、4串行口
LPT1\PRN :第一併行接口
。批處理文件可以理解成“一個DOS命令”
。爲何不要將批處理文件命名爲DOS的“內部命令或外部命令”?
答:如果與內部命令同名,則DOS內部命令優先級高於批處理,批處理文件不能執行;
   如果與外部命令同名,則取決於“先找到外部命令還是先找到批處理文件”,誰先被找到
   就先執行,因此,建議命名批處理時要避免與DOS的內、外部命令同名。
。DOS下創建批處理文件的方式?
  a    copy  con  要創建的批處理文件
  b    edit  要創建的批處理文件
。也可以用
  Pause  要顯示的信息   有類似與   echo   要顯示的信息
。如何讓“批處理文件”鳴鏑?(依靠計算機內置揚聲器)
  在DOS下用edit  鳴鏑.bat,之後進入編輯頁面,先輸入
  Pause在輸入一個空格,之後在按住CTRL鍵,按“P”鍵,鬆開CTRL鍵,再按住CTRL鍵,在按“G”,即可生成一個“鳴鏑控制符”。
  也可以按住CTRL鍵不鬆手,先後按“P”和“G”鍵。
  其實,用echo也能達到同樣效果,只是在文本中輸入控制符麻煩,可在DOS下編輯批處理文件,輸入控制符並保存後在返回到Windows下編輯,不失爲一個好辦法。

二、DOS命令簡介
1.Dir
顯示當前目錄信息,但不包括系統和隱藏文件
dir /p :分屏顯示信息(p是page的縮寫,即分頁顯示屏幕)
dir/w :用寬列表顯示信息,沒有文件大小和創建日期
dir/d :類似於dir/w顯示方式
dir/b :只顯示文件名,目錄名也按照文件名方式顯示,不顯示目錄名的[ ]標誌(一種精簡顯示)
dir /l :以小寫字母顯示文件和目錄
dir /a: :顯示指定屬性的文件,例:dir /a:r顯示當前目錄下的所有具有隻讀屬性的文件
例:dir /a:d表示只顯示目錄信息
例:查找指定日期的文件  dir|find “2007-12-04”,注意日期的書寫格式和本機日期顯示匹配
例:在多級目錄下查找文件,使用參數/s,如 dir temp /s,如果當前目錄下有temp目錄,temp下還有temp目錄,則執行結果是列出最後一層temp目錄下的所有文件
REM
dir/?看幫助,發現a後的:是可選的,但如果不用:,則會顯示“當前的驅動器的卷沒有標籤,找不到文件”信息。
不用:,怎麼又好使了?自己疏忽吧!
Dir /a:-r :顯示當前目錄下所有具有非只讀屬性的文件
-        :表示“否的前綴”。
REM


Dir /o: 按照分類方式顯示信息,如文件大小、字母順序等,例:dir /o:s表示按照文件大小顯示信息;dir /o:n按照字母順序顯示信息
Dir /n :以“長文件列表方式顯示,文件名在最右側”
Dir /c :類似於dir/n
Dir/x :顯示非8dot3命名規則的文件
例:dir >test.txt 表示將dir命令結果導入到一個文本文件裏
2.Cd
Change directory改變目錄
注意:如果在C盤使用如下命令
c:\>cd e:\test
結果仍在c:\>在,只不過在轉到d盤,d盤的當前目錄是d:\>test>,我在用at定期刪除某目錄下的文件就出了以上問題。
例:
@echo off
c:
rem 當時我望了轉到c:,結果刪除了批處理文件所在的磁盤很多文件,包括批處理文件本身
rem 使得at任務無法執行
cd "C:\Documents and Settings\All Users\Application Data\Symantec\Symantec AntiVirus Corporate Edition\7.5\Logs"
echo y | del *.*
Cd .. 表示回到上一級目錄
Cd\  表示回到根目錄
Cd  /d  參數/d表示即改變當前目錄,也改變當前驅動器
3.Copy
功能是複製與移動,但不能複製目錄中的子目錄
例:合併兩個文本文件1.txt和2.txt爲3 .txt
Copy /a 1.txt+2.txt 3.txt
REM 按照ASCII碼合併這兩個文件
Copy /b 1.txt+2.txt 3.txt
REM 按照二進制合併這兩個文件
     參數/a和/b不能一起使用,其中/a只能合併純文本文件,而/b即能以文本方式合併,又能以二進制方式合併
例:加密文件
copy /b test.jpg+1.txt 2.jpg
REM test.jpg和1.txt變成一個文件2.jpg,這樣文本信息得到了加密,需要查看該信息,可使用ultraedit軟件查看
REM 記住,要加密的文檔一定要放到+號右側
4.Xcopy
可以將目錄中的非空子目錄複製到其它地方,但要使用參數/s
/e必須與參數/s同用,表示不僅可以拷貝子目錄,空目錄也可以拷貝

/v拷貝後許進行校驗
5.Del
Delete
Del *.* 非常危險的命令
例:del /f  強制刪除只讀文件      Del/a  刪除指定屬性文件
6.ren
Rename
7.type
一次只能顯示一個文件的內容
8.Format與unformat
格式華後的磁盤可利用空間等於磁盤總空間,說明磁盤性能不錯
Format /u 表示無條件格式化,此時unformat無效
例:Echo y|formant a:
Unformat 盤符 表示恢復已格式化的磁盤
unformat /l  表示列出可恢復的文件列表
9.Md與Rd
新建目錄
例:同時建立多個目錄
md c:\1  d:\2  e:\3 等價於md c:\1;d:\2
刪除目錄,所刪除的目錄裏不能有子目錄和文件,如果想這樣執行,可使用
Rd /s
例:建立一個加密目錄及如何查看和刪除它
md  test..\
這樣就建立了一個“加密”的文件夾,雙擊無法打開它
可通過“開始”菜單中的“運行”或“資源管理器中的地址欄”輸入它的“完整路徑”查看
通過 rd /s /q刪除它
思考:如果建立的“加密”文件夾和屬性隱藏的方法包括註冊表隱藏結合起來,就可以建立一個相對私祕的空間。
註冊表大概位置:MACHINE\SOFTWARE\WINDOWNS\CURRENTVERSION\EXPLORER\ACVANCED\FOLEDR\SHWOALL\CHECKEDVALUE的值
10.Deltree
刪除目錄樹,非空目錄照刪不誤
Deltree *.*非常危險的命令
11.Mem
Memory
12.Chkdsk
Checkdisk
13.Sys
C:\>sys a:等同於format a:/s,都是製作系統啓動盤
如果copy一張DOS啓動盤,io.sys和msdos.sys這兩個文件不一定能拷貝到磁盤最前面的磁道上
14.Cls
清屏
15.More
分屏顯示
16.Move
例:@echo off
Cd c:\test
Move c:*.* a:
REM
    注意第3行“c:與*.*”之間沒有“\”,這表示將當前目錄即test目錄下的所有文件拷貝 到A盤。
17.Help
人如其名
18.Attrib
Attribute
例:將c:\test目錄下的所有文件和子目錄(包括目錄本身)都設置爲“只讀”屬性
Attrib  +r  c:\test  /s  /d
/s  :表示對子目錄進行操作
/d  :表示對目錄進行操作,可簡單理解爲directory
例:將c:\test目錄下的所有文件和子目錄(不包括目錄本身)都設置爲“只讀”屬性
Attrib +r  c:\test\*.*  /s /d
19.Time與date
Date /t :不需輸入新時間
Echo+|date|find “當前日期”
Echo+|time|find “當前時間”
例:可編寫一批處理文件記錄機器時間使用的狀況
echo+|date/t>test.txt
Echo+|time/t>>test.txt
20.Lable
21.Defrag
整理磁盤碎片
22.Doskey
建立和調用DOS宏命令
例:doskey d=deltree,以後執行d就相當於執行deltree命令
例:如果在CMD下輸入了很多的命令,需要再次使用這些命令而又不想重複輸入時,可使用doskey,具體操作(在CMD):doskey /h(h是history)是查看曾經在CMD下已經使用的命令,可通過F9鍵調出它們的緩存表再次使用,也可以使用上下箭頭或PaUp和PaDn鍵來操作,如果想清除他們,可使用doskey /reinstall。
23.Fdisk
Fdisk /mbr :重新建立DOS主引導記錄
24.Memmaker
內存優化命令
25.Emm386
擴展內存管理
26.Lh 或loadhigh
將程序載入高端內存
27.Msd
系統檢測
不能直接使用
28.Undelete
該命令使用前,需要使用lock命令,解除對硬盤目錄區不讓修改的限制
Undelete /all :恢復所有del的文件,不用詢問
Undelete /list :列出可恢復的文件列表
29.Path
例:path c:\test
如果在當前目錄下執行某命令,不存在,則在path設置的路徑下繼續尋找該命令,有則執行
30.Prompt
設置提示符,就是我們常見的c:\>,c:表示當前盤符是C盤,\表示根目錄,>表示將提示符與待輸入的命令分開
可以根據需要將c:\>改變
31.Backup與restore
備份與恢復
Restort /s :包括子目錄恢復到指定的目錄中
32.Edit
只能編輯文本文件,編輯的文件存在則編輯,不存在則臨時建立該文本文件並進入編輯狀態,如果保存就會在磁盤上建立該文件
33.Set
設置變量,在CMD下直接輸入set命令,會列出絕大部分的系統變量
例:set path=c:\test 等同於path c:\test
例:手動輸入變量值
set /p a=    請輸入你的選擇
REM 在純DOS環境下,/p參數不存在,該語句自然不好使!
REM 可通過setx命令自行定義類似系統變量的變量(重新啓動機器後仍然存在的那種變量),但XP系統中沒有該命令,2003中有。格式:setx 變量  賦值
Set /a var=
REM 對變量進行算術運算
例:set /a var+=1
Set %path:str1=str2%
REM 用str2替換str1
例:@echo off
set var= zgk.com
Echo 顯示var原值
echo %var%
pause
set a=%var: =%
Rem 原變量中的空格被替換掉
echo 顯示替換後的var值
echo %a%
set b=%var:.=%
echo %b%
    rem 原變量中的點“.”被替換掉
pause
set %path:~10,5%
REM 截取指定變量的列數
例:@echo off 
Set var=zgk.com
Echo %var%
Set b=%var:~2,3%
Rem 截取指定變量var的前2列,也就是說要從第3列開始讀取3個字符賦給新的變量b,rem 那麼b=k.o
Echo %b%
Pause
Set %path:~-10%
例:@echo off
set var=zgk.com
Echo %var%
Set b=%var:~-3%
Rem 從後往前取指定變量var的3列賦給新的變量b,那麼b=com
Echo %b%
Set c=%var:~3%
Rem 從頭開始截取指定變量var的前3列,就是說將var的第4列後的所有變量賦給c,rem 那麼c=.com
Echo %c%
pause
Set %path:~0,-2%
例:@echo off
set var=zgk.com
Echo %var%
Set b=%var:~-3%
Rem 從後往前取指定變量var的3列賦給新的變量b,那麼b=com
Echo %b%
Set c=%var:~0,-2%
Rem 從後去掉var的2列,之後從將var賦給c,那麼c=zgk.c
Echo %c%
pause

34.Smartdrv
設置磁盤高速緩存
35.Append
設置非可執行文件路徑
例:當前目錄裏沒有test.txt,c:\下有 
append c:\ 類似於path命令
36.Debug
Debug 文件名
37.Diskcomp
比較兩張軟盤內容
38.Expand
解壓命令
Expand 原壓縮文件路徑  目的地
39.Fc
比較兩個文件內容
例:fc  /c   test1.txt   test2.txt
Rem  /c  不分大小寫比較 
40.Fasthelp
快速幫助
XP系統下沒有
Fashhelp command 等價於 command/?
41.Qbasic
啓動basic集成環境
42.Setver
設置版本,還能查看到winword和excel的版本
在config.sys中常用語法:device=setver.exe
REM
沒在config.sys中加入device=setver時,還能看到winword和excel的版本,加上了它怎麼就什麼也看不到呢?也沒有錯誤提示信息
REM
43.Share
44.Subst
用指定的路徑替代某個盤符
例:subst  a:  c:\test 表示用C盤下的test目錄替代A盤
Subst  a: /d 表示刪除替代
45.Tree
顯示當前目錄或指定目錄下的所有子目錄結構,但並不顯示文件名
/f  (file) :顯示目錄的同時還顯示目錄下的文件名
Tree /a :以ascii碼顯示目錄樹
例:查找c:\test目錄下的test.txt的個數
tree  /f  c:\test | find /c /I  “test.txt”
如果文件太多超出緩衝區大小,可使用:tree /f |more
46.Vsafe
病毒防護程序,沒試過!!!!!!!
47.Ver
查看DOS版本號
48.Vol
查看磁盤的卷標號
49.Ctty
改變控制的輸入輸出設備
例:ctty  aux 表示設置aux爲輸入輸出設備
50.Recover
覆蓋磁盤
51.Replace
例:replace  c:\test1.txt  d:\test2.txt  /r
即使test2.txt具有隻讀屬性,也將被替換
例:replace d:\a.txt d:\backup /s /p /u
/s :用D:\a.txt替換D:\backup及其子目錄下所有的同名文件
/p :替換前要進行確認
/u :(update),在替換前檢查源文件與被替換的目標文件的修改時間,如果前者更新,則不進行替換
例:@echo off
cd %1
for %%i in (*.%3) do if not exist "%2%%i" copy %%i "%2" /y
replace *.%3 "%2" /u
執行filesyn.bat d:\ e:\ txt
52.at
定製計劃任務(該命令定製的計劃任務是後臺運行的,而在Windows下“任務計劃”定製的任務是前臺運行),二者的主要區別還有at命令只能查看有at命令本身定製的計劃任務,而控制面板中的“任務計劃”可以查看它和at命令定製的任務;二者都依靠task scheduler服務,如果該服務停止,通過運行“任務計劃”中的任務可以開啓該服務,而at命令定製的服務則不行。
例:設置at制定的任務爲前臺運行
at  16:30  /interactive  c:\test.bat
/interactive 可使任務變爲前臺運行
例:指定時間運行某程序
At  16:00   c:\test.bat
::在16:00運行test.bat
例:沒有15執行某任務
At  16:30 /every:15  c:\test.bat
::每月的15日16:30運行
At  16:30 /next:15   c:\test.bat
:: 下個月的15日16:30運行
At  16:30 /every:四  c:\test.bat
::每週四的16:30運行
例:刪除某任務
At  2  /delete  /yes
::刪除任務ID爲2的計劃任務,/yes表示刪除任務不需要確認
例:刪除所有任務
At  /delete
::不輸入任何ID,表示清除所有計劃任務
53.shutdows
Shutdown  /s  /t  time  /f
/s  指定關機操作
/t  多長時間後關機,如/t  6,6秒鐘後關機
/f  強制關機,不管還有什麼程序在進行
例:在指定的計算機上運行某程序
At  \\computername  16:30  c:\test.bat
54.find
標準格式    find   “要查找的字符串”  待查找的文本文件
例:在test.txt中查找nihao字符串
find  “nihao”  test.txt
Find  /c  “nihao”  test.txt
::/c(count) 統計nihao在test.txt出現的次數
Find  /n  “nihao”  test.txt
::/n(number) 統計所有nihao所在的行數
Find  /i  “nihao”  test.txt
::/i(ignore)忽略大小寫
Find  /v  “nihao”  test.txt
::/v  查找不包含nihao字符串的內容
55.Shift
增加批處理中參數的數量
56.Systeminfo
如果需要批處理顯示有關係統信息,該命令很有用。
57.Ntsd
強制關閉進程命令,例:ntsd –c q –pn notepad.exe
58.建立隱藏用戶
之前掌握註冊表的用法:
1利用net新建用戶;2導出註冊表SAM下的name項;3刪除新建用戶;4導入已導出的註冊表
新方法:net user zgktest$ /add,此時,用net user是無法查看到新建用戶的;爲新建用戶添加註釋:net user zgktest$ /comment:”註釋內容”
59.Sfc
掃描受保護的系統文件的完整性
/scannow  :立即掃描所有受保護的系統文件,如有修改自動修復。
/verifyonly  :僅掃描不修復
/verifyfile  :僅掃描指定的文件不修復
59.Taskkill
終止進程
/f   強行終止
/im  指定終止進程的圖象名
例:taskkill /f  /im  ctfmon.exe  /im  notepad.exe
三、批處理命令簡介
1.Echo on/off
打開或關閉回顯
echo off 表示不顯示它以後的所有命令行
Echo 顯示信息
Echo y|format a: 表示傳遞參數y 
Echo n|format a: 
以下是echo空行特殊寫法
Echo.
Echo+
Echo;
例:echo nihao
    @echo nihao
    Pause
執行結果:
    echo nihao   rem 顯示第1行命令行本身
    nihao       rem 顯示第1行命令行執行結果
    nihao       rem顯示第2行命令行執行結果 
2.@
不顯示命令行本身
3.Call
在一個批處理文件中調用另一個批處理或文件
例:在1.bat中調用2.bat
1.bat
@echo off
Echo this is 1.bat 
Call  2.bat
::此時,用command /c 2.bat代替call 2.bat,不行,如果1.bat或2.bat中有中文,則顯示一堆亂碼
::用start 2.bat代替call 2.bat,執行完畢根本不返回到1.bat。
Echo 2.bat end,back to 1.bat
4.Pause
按任意鍵暫停
5.Goto label 和:label連用
注意label的命名有講究,如果批處理中有多個label,那麼label名的前八位字母就不能完全一致,因爲COMMAND只識別前八位,如果命名一致,從第2個label將永遠不能執行。
6.Rem
註釋,等同於 ::和/*  */
7.%
參數表示符
參數是指運行批處理文件時在文件名後加的字符串,範圍%0~%9,%0表示文件本身,字符串由%1~%9
8.If
條件判斷語句
If  (not)  /i  “字符串1”=”字符串2” 待執行的命令
/I  :表示不區分大小寫判斷
例:@echo off
Set  /p var1=  please input
Set  /p var2=  please input
If   "%var1%"=="%var2%"  (echo 變量相等)  else echo 變量不相等
::變量var1和var2使用了雙引號,是爲了比較變量中的空格,如var1=a,var2=a ,不加
::雙引號,它們相等,執行的是(echo 變量相等),加了雙引號,執行的則是“else echo 變量不相等”命令
pause
If  (not) exist 文件 待執行的命令
例:if exist c:\test1.txt   (echo 存在test1.txt)   else  echo  test1.txt不存在
If  (not) errorlevel 數字 待執行的命令
例:@echo off
Set /p  commandname=請輸入要測試的是否存在命令
If  errorlever==0  (echo 命令成功執行)  else  echo 命令沒有成功執行
::曾經錯誤errorlever和0之間忘記了= =,echo和顯示的信息之間沒有空格
pause
例: @echo off
if not exist d:\myfolder\nul md d:\myfolder
if not exist d:\myfolder\word\nul md d:\myfolder\word
REM 在win98系統中,if語句無法檢測到目錄的存在,但可以檢測空設備,所以爲保證腳本正常運行,使用了nul。
If  defined  xxx  command :判斷xxx是否是被定義的變量
例:@echo off
Set  var=123
If defined var (echo var是被定義的變量)  else echo 未被定義
pause
If defined %var% (echo %var%是被定義的變量)  else echo %var%是未被定義
::對var的值進行判斷是否爲變量
pause
Set 123=456
If defined 123 (echo 123是被定義的變量)  else echo 未被定義
pause

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