|
http://zthread.sourceforge.net
makefile文件是win32匯編程序中不可少的一部分,類似于dos匯編下的bat文件
它一般需要包含以下內容
1.注釋
2.宏定義
3.顯示規(guī)則
4.隱含規(guī)則
為了方便使用,一般都把描述文件的文件名取為默認文件名:makefile。這個例子的makefile文件如下(注意前面括號里的是行號,不是文件的真正內容):
(001) # nmake工具的描述文件例子 (002) EXE = Test.exe #指定輸出文件 (003) OBJS = x.obj \ (004) y.obj #需要的目標文件 (005) RES = x.res #需要的資源文件 (006) (007) LINK_FLAG = /subsystem:windows #鏈接選項 (008) ML_FLAG = /c /coff #編譯選項 (009) (010) #定義依賴關系和執(zhí)行命令 (011) $(EXE): $(OBJS) $(RES) (012) Link $(LINK_FLAG) /out:$(EXE) $(OBJS) $(RES) (013) $(OBJS): Common.inc (014) y.obj: y.inc (015) (016) #定義匯編編譯和資源編譯的默認規(guī)則 (017) .asm.obj: (018) ml $(ML_FLAG) $< (019) .rc.res: (020) rc $< (021) (022) #清除臨時文件 (023) clean: (024) del *.obj (025) del *.res 1. 注釋和換行 makefile中的注釋是以#號開頭一直到行尾的字符,當nmake工具處理到這些字符的時候,它會完全忽略#號及全部注釋字符。 當一行的內容過長的時候,可以用換行符來繼續(xù),makefile的換行符是\,如例子中的第三行和第四行可以合并為: OBJS = x.obj y.obj #需要的目標文件 在使用換行符的時候要注意在“\”后面不能再加上其他字符,包括注釋和空格,否則nmake檢測到“\”不在一行的最后,就不會把它當成換行符解釋,就會出現錯誤。 2. 宏定義 makefile中允許使用簡單的宏定義指代源文件及其相關編譯信息,可以把宏稱為變量,在整個描述文件中,只要符合下面語法的行就是宏定義: 變量名=變量內容 如上面例子文件中的2到8就是宏定義,在引用宏時只需在變量前加$符號,但是要注意的是,如果變量名的長度超過一個字符,在引用時就必須加圓括號(),下面都是有效的宏引用: $(LINK_FLAG) $(EXE) $A $(A) 其中最后兩個引用是完全一致的。 宏定義的使用可以使makefile的使用更靈活:首先可以使文件便于修改,比如把第8行和第18行中ml的選項部分寫成宏定義,以后要改變編譯選項的時候,只要直接在makefile文件頭部改變宏定義就可以了,不必重新閱讀整個makefile文件;其次,當不止一個地方用到同一個文件的時候,把文件名定義為宏定義可以減少錯誤,增加可讀性,同時也可以便于修改;最大的好處是可以直接在命令行中用新的宏定義覆蓋,比如在命令行中鍵入: nmake ML_FLAG="/c /coff /Fl" 那么這時就會以新的/c /coff /Fl定義代替makefile中定義的/c /coff,在這種使用中要注意兩個問題,一是宏名稱要區(qū)分大小寫,ML_FLAG和ml_flag是不一樣的;二是定義值中有空格的時候要用雙引號引起來,沒有空格時可以不用雙引號,如ML_FLAG=/c,這使臨時使用不同的參數編譯文件時可以不必修改makefile。 3. 顯式規(guī)則 makefile中包含有一些規(guī)則,這些規(guī)則定義了文件之間的依賴關系和產生命令,一個規(guī)則的格式是這樣的: 目標文件:依賴文件;命令 (方法1) 或 目標文件:依賴文件 (方法2) 命令 在規(guī)則定義和命令行中,不能包含注釋,例子中的第11和12行把宏定義展開后就是: test.exe:x.obj y.obj x.res Link /subsystem:windows /out:test.exe x.obj y.obj x.res 這里的目標文件就是test.exe,它依賴于3個文件x.obj,y.obj和x.res,如果有必要,產生目標文件的命令就是下面的Link命令,整個規(guī)則可以用兩種方法,用第二種方法的時候,命令可以從第二行開始,第一行的“;”省略,但是這時命令前面必須有一個Tab字符,否則nmake無法區(qū)分這究竟是命令還是別的定義。目標文件可以有多個,依賴文件也可以有多個,同時命令也可以由多個命令行組成,當然這時候就必須用第二種方法定義了。 我們也可以用test.exe生成的規(guī)則定義其他文件,如x.obj或x.res的生成方法,但nmake如何知道哪個是最終要make的文件呢?實際上nmake默認將整個描述文件的第一條規(guī)則中的目標文件認為是最終文件,如果我們把11,12行放到第13行后面,那么x.obj和y.obj的建立規(guī)則就成了第一條規(guī)則,nmake建立了x.obj和x.obj之后就不理會test.exe的建立了,所以我們必須把最終需要生成的文件放在第一條規(guī)則定義。當然,在nmake的命令行參數中可以指定要make的目標,如我們要生成x.res文件,那么不必修改makefile將x.res的描述規(guī)則移動到最前面,而是直接在命令行鍵入以下命令即可: nmake x.res 參數中也可以同時帶好幾個目標文件名,nmake會一一處理,如果指定的目標文件沒有對應的規(guī)則,nmake會返回一個出錯信息: fatal error U1073: don't know how to make 'xxx文件' 當用戶要求nmake去建造一個目標時,make會去找到這個目標的依賴規(guī)則,這時第二行中的命令并不會立刻就執(zhí)行,而是首先要做一些事情:nmake先去檢查依賴文件是否是另一條規(guī)則的目標文件,如果是則先處理這一條規(guī)則,否則不是,nmake再檢查各個依賴文件的時間,看這些文件有沒有比目標文件更新的,如果沒有,nmake會決定不再重新建造目標文件,并給出提示:'xxx文件' is up-to-date,如果依賴文件有比目標文件更新的,才執(zhí)行命令。 所以一個順序下來,所有的目標文件以及它們的依賴文件,以及依賴文件的依賴文件都會被檢查并更新,總而言之,一個目標文件的建立包含了順序正確的指令鏈接,這個鏈接結構是樹狀的,目標文件是根,一級級擴展到多個文件,我們要求的是nmake去建立鏈接中處于根部的那個文件,nmake會根據鏈接結構從目標開始向初始狀態(tài)前進,最后慢慢回來,在這個過程中執(zhí)行建立每個文件所必須的命令,一直到最終目標建立完成。 目標也可以沒有依賴文件,而且目標也可以不是一個真正存在的文件,如例子第23行到第25行中的clean是一個目標,但我們并不是要生成一個clean文件,而是希望在文件調試完畢后用nmake來清除臨時文件,當我們鍵入nmake clean的時候,工作目錄下并沒有clean這個文件,那么nmake就會去執(zhí)行clean定義中的命令,因為nmake把每一個不存在的目標當做是一個過時的目標,如此一來,就會刪除中間過程中的文件*.obj和*.res。 指出了目標文件全名的規(guī)則稱為顯式規(guī)則,但有些類別的文件的編譯方法可以是雷同 的,如從asm文件產生obj文件的命令總是用ml,從rc文件產生res文件的命令總是用rc,對于每個文件都寫一條規(guī)則有些多余,這時候就要用到隱含規(guī)則。 4. 隱含規(guī)則 隱含規(guī)則可以為某一類的文件指出建立的命令,它具體定義了如何將帶一個特定擴展名的文件轉換成具有另一種擴展名的文件,定義的格式是: .源擴展名.目標擴展名:;命令 (方法1) 或 .源擴展名.目標擴展名: (方法2) 命令 隱含規(guī)則的語法和顯式規(guī)則相似,也是用“:”隔開,在“;”下面書寫命令,也可以不用“;”而將命令寫在第二行,同理,這時命令之前要加一個Tab字符。 隱含規(guī)則不能有依賴文件,所以“:”下面沒有內容,例子中的第17、18行定義了從asm文件建立obj文件的隱含規(guī)則,第19和20行定義了從rc文件建立res文件的隱含規(guī)則,隱含規(guī)則中無法指定確定的輸入文件名,因為輸入文件名是泛指的有相同擴展名的一整類文 件,這時候就要用到幾個特殊的內定宏來指定文件名,這些宏是$@,$*,$?和$<,它們的含義如下: ● $@ —— 全路徑的目標文件。 ● $* —— 除去擴展名的全路徑的目標文件。 ● $? —— 所有源文件名。 ● $< —— 源文件名(只能用在隱含規(guī)則中)。 所以第19、20行中的rc $< 用于x.rc的時候就是rc x.rc。 讀者可以注意到一些顯式規(guī)則沒有命令行,如第13行的“$(OBJS): Common.inc”指出了所有的obj文件全部依賴于Common.inc文件,第14行的“y.obj: y.inc”則指出了y.obj同時也依賴于y.inc和第13行的規(guī)則合并,y.obj依賴于Common.inc也依賴于y.inc,但是這兩條規(guī)則都沒有指出產生這些obj文件的命令,所以nmake處理的時候會到隱含規(guī)則中去找命令行,最后會用第18行的“ml $(ML_FLAG) $<”命令去產生這些obj文件。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/hust_chen/archive/2008/04/25/2329368.aspx
轉================================ Makefile文件
Make工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關系并自動維護編譯工作。而makefile 文件需要按照某種語法進行編寫,文件中需要說明如何編譯各個源文件并連接生成可執(zhí)行文件,并要求定義源文件之間的依賴關系。makefile 文件是許多編譯器--包括 Windows NT 下的編譯器--維護編譯信息的常用方法,只是在集成開發(fā)環(huán)境中,用戶通過友好的界面修改 makefile 文件而已。 在 UNIX 系統(tǒng)中,習慣使用 Makefile 作為 makefile 文件。如果要使用其他文件作為 makefile,則可利用類似下面的 make 命令選項指定 makefile 文件: $ make -f Makefile.debug 例如,一個名為prog的程序由三個C源文件filea.c、fileb.c和filec.c以及庫文件LS編譯生成,這三個文件還分別包含自己的頭文件a.h 、b.h和c.h。通常情況下,C編譯器將會輸出三個目標文件filea.o、fileb.o和filec.o。假設filea.c和fileb.c都要聲明用到一個名為defs的文件,但filec.c不用。即在filea.c和fileb.c里都有這樣的聲明: #include "defs " 那么下面的文檔就描述了這些文件之間的相互聯(lián)系: --------------------------------------------------------- #It is a example for describing makefile prog : filea.o fileb.o filec.o cc filea.o fileb.o filec.o -LS -o prog filea.o : filea.c a.h defs cc -c filea.c fileb.o : fileb.c b.h defs cc -c fileb.c filec.o : filec.c c.h cc -c filec.c ---------------------------------------------------------- 這個描述文檔就是一個簡單的makefile文件。 從上面的例子注意到,第一個字符為 # 的行為注釋行。第一個非注釋行指定prog由三個目標文件filea.o、fileb.o和filec.o鏈接生成。第三行描述了如何從prog所依賴的文件建立可執(zhí)行文件。接下來的4、6、8行分別指定三個目標文件,以及它們所依賴的.c和.h文件以及defs文件。而5、7、9行則指定了如何從目標所依賴的文件建立目標。 當filea.c或a.h文件在編譯之后又被修改,則 make 工具可自動重新編譯filea.o,如果在前后兩次編譯之間,filea.C 和a.h 均沒有被修改,而且 test.o 還存在的話,就沒有必要重新編譯。這種依賴關系在多源文件的程序編譯中尤其重要。通過這種依賴關系的定義,make 工具可避免許多不必要的編譯工作。當然,利用 Shell 腳本也可以達到自動編譯的效果,但是,Shell 腳本將全部編譯任何源文件,包括哪些不必要重新編譯的源文件,而 make 工具則可根據目標上一次編譯的時間和目標所依賴的源文件的更新時間而自動判斷應當編譯哪個源文件。 Makefile文件作為一種描述文檔一般需要包含以下內容: ◆ 宏定義 ◆ 源文件之間的相互依賴關系 ◆ 可執(zhí)行的命令 Makefile中允許使用簡單的宏指代源文件及其相關編譯信息,在Linux中也稱宏為變量。在引用宏時只需在變量前加$符號,但值得注意的是,如果變量名的長度超過一個字符,在引用時就必須加圓括號()。 下面都是有效的宏引用: $(CFLAGS) $2 $Z $(Z) 其中最后兩個引用是完全一致的。 需要注意的是一些宏的預定義變量,在Unix系統(tǒng)中,$*、$@、$?和$ <四個特殊宏的值在執(zhí)行命令的過程中會發(fā)生相應的變化,而在GNU make中則定義了更多的預定義變量。關于預定義變量的詳細內容, 宏定義的使用可以使我們脫離那些冗長乏味的編譯選項,為編寫makefile文件帶來很大的方便。 --------------------------------------------------------- # Define a macro for the object files OBJECTS= filea.o fileb.o filec.o
# Define a macro for the library file LIBES= -LS
# use macros rewrite makefile prog: $(OBJECTS) cc $(OBJECTS) $(LIBES) -o prog …… --------------------------------------------------------- 此時如果執(zhí)行不帶參數的make命令,將連接三個目標文件和庫文件LS;但是如果在make命令后帶有新的宏定義: make "LIBES= -LL -LS " 則命令行后面的宏定義將覆蓋makefile文件中的宏定義。若LL也是庫文件,此時make命令將連接三個目標文件以及兩個庫文件LS和LL。 在Unix系統(tǒng)中沒有對常量NULL作出明確的定義,因此我們要定義NULL字符串時要使用下述宏定義: STRINGNAME=
優(yōu)化
選項 作用 /O1 創(chuàng)建小代碼 /O2 創(chuàng)建快速代碼 /Oa 假設沒有別名 /Ob 控制內聯(lián)展開 /Od 禁用優(yōu)化 /Og 使用全局優(yōu)化 /Oi 生成內部函數 /Op 改善浮點數一致性 /Os 代碼大小優(yōu)先 /Ot 代碼速度優(yōu)先 /Ow 假定在函數調用中使用別名 /Ox 使用最大優(yōu)化 (/Ob1gity /Gs) /Oy 省略框架指針
代碼生成
選項 作用 /clr 啟用 C++ 的托管擴展并產生在公共語言運行庫上運行的輸出文件 /EH 指定異常處理模型 /G3 優(yōu)化代碼以優(yōu)選 386 處理器。在 Visual C++ 5.0 中已經停用,編譯器將忽略此選項 /G4 優(yōu)化代碼以優(yōu)選 486 處理器。在 Visual C++ 5.0 中已經停用,編譯器將忽略此選項 /G5 優(yōu)化代碼以優(yōu)選 Pentium /GB 與 /G6 等效;將 _M_IX86 的值設置為 600 /Gd 使用 __cdecl 調用約定 /Ge 激活堆棧探測 /GF /GF 啟用字符串池 /GH 調用掛鉤函數 _penter /GH 調用掛鉤函數 _pexit /GL 啟用全程序優(yōu)化 /Gm 啟用最小重新生成 /Gr 啟用運行時類型信息 (RTTI) /Gr 使用 __fastcall 調用約定 /GS 控制堆棧探測 /GT 支持使用靜態(tài)線程本地存儲區(qū)分配的數據的纖程安全 /GX 啟用同步異常處理 /Gy 啟用函數級鏈接 /GZ 使用 __stdcall 調用約定 /MD 使用 MSVCRT.lib 創(chuàng)建多線程 DLL /MDd 使用 MSVCRTD.lib 創(chuàng)建調試多線程 DLL /ML 使用 LIBC.lib 創(chuàng)建單線程可執(zhí)行文件 /MLd 使用 LIBCD.lib 創(chuàng)建調試單線程可執(zhí)行文件 /MT 使用 LIBCMT.lib 創(chuàng)建多線程可執(zhí)行文件 /MTd 使用 LIBCMTD.lib 創(chuàng)建調試多線程可執(zhí)行文件
輸出文件
選項 作用 /FA /FA 創(chuàng)建列表文件 設置列表文件名 /Fd 重命名程序數據庫文件 /Fe 重命名可執(zhí)行文件 /Fm 創(chuàng)建映射文件 /Fo 創(chuàng)建對象文件 /Fp 指定預編譯頭文件名 /FR /FR 生成瀏覽器文件 /Fx 將插入的代碼與源文件合并
調試
選項 作用 /GS 緩沖區(qū)安全檢查 /GZ 與 /RTC1 相同 /RTC 啟用運行時錯誤檢查 /Wp64 檢測 64 位可移植性問題 /Yd 將完整的調試信息放在所有對象文件中 /Yl 創(chuàng)建調試庫時插入 PCH 引用 /Z7 生成與 C 7.0 兼容的調試信息 /Zd 生成行號 /Zi 生成完整的調試信息
預處理器
選項 作用 /AI 指定在解析傳遞到#using 指令的文件引用時搜索的目錄 /c 在預處理期間保留注釋 /D 定義常數和宏 /E 將預處理器輸出復制到標準輸出 /EP 將預處理器輸出復制到標準輸出 /Fl 預處理指定的包含文件 /FU 強制使用文件名,就像它已被傳遞到#using 指令一樣 /I 在目錄中搜索包含文件 /P 將預處理器輸出寫入文件 /U 移除預定義宏 /U 移除所有的預定義宏 /X 忽略標準包含目錄 /ZI 將調試信息包含在與“編輯并繼續(xù)”兼容的程序數據庫中
(附“編輯并繼續(xù)”:編輯并繼續(xù)”處理大多數類型的代碼更改。但是,在程序執(zhí)行期間,某些更改無法應用。若要應用這些更改,必須暫停執(zhí)行并生成新版本的代碼。
在調試會話期間不能應用下列 C/C++ 更改: 大多數的全局或靜態(tài)數據的更改。 從其他計算機復制并且未在本地生成的可執(zhí)行文件的更改。 影響一個對象(如類的數據成員)布局的數據類型的更改。 添加超過 64k 字節(jié)的新代碼或數據。 添加要求在指令指針前存在構造函數的變量。 影響需要運行時初始化的代碼的更改。 在某些實例中,添加異常處理程序。 資源文件的更改。 只讀文件中的代碼更改。 沒有相應 PDB 文件的代碼的更改。 沒有對象文件的代碼的更改。
在以下調試方案中,“編輯并繼續(xù)”不可用: 在 Windows 98 上調試。 混合模式(本機/托管)調試。 SQL 調試。 調試 Dr. Watson 轉儲。 在未選擇“在未處理的異常上展開調用堆棧”選項的情況下,在發(fā)生未處理的異常之后編輯代碼。 調試嵌入式運行庫應用程序。 從“調試”菜單中使用“附加到”調試應用程序,而不是使用“啟動”運行應用程序。 調試優(yōu)化后的代碼。 當目標為 64 位應用程序時,調試托管代碼。如果想要使用“編輯并繼續(xù)”,必須將目標平臺設置為 x86。((“Project 屬性”對話框->“編譯”選項卡->“高級編譯器”設置。) 如果由于生成錯誤無法生成新版本的代碼,則對舊版本的代碼進行調試)
語言
選項 作用 /noBool 取消 C++ bool、true 和 false 關鍵字 /vd 取消或啟用隱藏的 vtordisp 類成員 /vmb 對指向成員的指針使用最佳的基 /vmg 對指向成員的指針使用完全一般性 /vmm 聲明多重繼承 /vms 聲明單一繼承 /vmv 聲明虛擬繼承 /Za 禁用語言擴展 /Zc 在 /Ze 下指定標準行為 /Ze 啟用語言擴展 /Zg 生成函數原型 /Zl 從 .obj 文件中移除默認庫名 /Zp n 封裝結構成員 /Zs 只檢查語法
鏈接
選項 作用 /F 設置堆棧大小 /LD 創(chuàng)建動態(tài)鏈接庫 /LDd 創(chuàng)建調試動態(tài)鏈接庫 /link 將指定的選項傳遞給 LINK /MD 使用 MSVCRT.lib 編譯以創(chuàng)建多線程 DLL /MDd 使用 MSVCRTD.lib 編譯以創(chuàng)建調試多線程 DLL /ML 使用 LIBC.lib 編譯以創(chuàng)建單線程可執(zhí)行文件 /MLd 使用 LIBCD.lib 編譯以創(chuàng)建調試單線程可執(zhí)行文件 /MT 使用 LIBCMT.lib 編譯以創(chuàng)建多線程可執(zhí)行文件 /MTd 使用 LIBCMTD.lib 編譯以創(chuàng)建調試多線程可執(zhí)行文件
預編譯頭
選項 作用 /Y- 忽略當前生成中的所有其他預編譯頭編譯器選項 /Yc 創(chuàng)建預編譯頭文件 /Yd 將完整的調試信息放在所有對象文件中 /Yu 在生成期間使用預編譯頭文件 /YX 自動處理預編譯頭
雜項
選項 作用 @ 指定響應文件 /? 列出編譯器選項 /c 編譯但不鏈接 /H 限制外部(公共)名稱的長度 /HELP 列出編譯器選項 /J 更改默認的 char 類型 /NOLOGO 取消顯示登錄版權標志 /QI0f 確保 Pentium 0F 指令沒有問題 /QIfdiv FDIV、FPREM、FPTAN 和 FPATAN 指令有缺陷的 Intel Pentium 微處理器的變通方法 QIfist 當需要從浮點類型轉換為整型時取消 Helper 函數 _ftol 的調用 /showIncludes 在編譯期間顯示所有包含文件的列表 /Tc /Tc 指定 C 源文件 /Tp /Tp 指定 C++ 源文件 /V 設置版本字符串 /w 設置警告等級 /w 禁用所有警告 /Wall 啟用所有警告,包括默認情況下禁用的警告 /WL 在從命令行編譯 C++ 源代碼時啟用錯誤信息和警告消息的單行診斷 /Zm 設置編譯器的內存分配限制
CL 命令行使用下列語法:
CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
下表說明CL 命令的輸入項意義
option 一個或多個 CL 選項。請注意,所有選項都應用于所有指定的源文件。選項是由一個正斜杠 (/) 或一個短劃線 (–) 指定的。如果某個選項帶有參數,則該選項的說明指定在選項和參數之間是否允許有空格。選項名(/HELP 選項除外)區(qū)分大小寫。有關更多信息,請參閱 CL 選項的順序。
file 一個或多個源文件、.obj 文件或庫的名稱。CL 編譯源文件并將 .obj 文件和庫的名稱傳遞給鏈接器。有關更多信息,請參閱 CL 文件名語法。
lib 一個或多個庫名。CL 將這些名稱傳遞給鏈接器。
command-file 包含多個選項和文件名的文件。有關更多信息,請參閱 CL 命令文件。
link-opt 一個或多個鏈接器選項。CL 將這些選項傳遞給鏈接器。
您可以指定任意數目的選項、文件名和庫名,條件是命令行上的字符數不超過 1024,該限制是操作系統(tǒng)指定的。
CL 命令文件請參見 設置編譯器選項 | 編譯器選項 命令文件是一個文本文件,它包含您另外在命令行上鍵入或使用 CL 環(huán)境變量指定的選項和文件名。CL 接受在 CL 環(huán)境變量中或命令行上用作參數的編譯器命令文件。與命令行或 CL 環(huán)境變量不同,命令文件允許使用多行選項和文件名。
命令文件中的選項和文件名將根據 CL 環(huán)境變量中或命令行上的命令文件名的位置被進行處理。但是,如果 /link 選項出現在命令文件中,則該行其余部分的所有選項將被傳遞給鏈接器。命令文件的后面幾行中的選項和命令行上命令文件調用之后的選項仍被作為編譯器選項接受。
命令文件一定不能包含 CL 命令。每個選項必須在同一行上開始和結束;不能使用反斜杠 (\) 跨行組合一個選項。
命令文件用一個 @ 符后接一個文件名指定;該文件名可指定絕對路徑或相對路徑。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/mickey139/archive/2009/06/01/4232489.aspx
后綴是bat的文件就是批處理文件,是一種文本文件。簡單的說,它的作用就是自動的連續(xù)執(zhí)行多條命令,批處理文件的內容就是一條一條的命令。那它有什么用呢?
比如,在啟動wps軟件時,每次都必須執(zhí)行
C:〉cd wps C:WPS〉spdos C:WPS〉py C:WPS〉wbx C:WPS〉wps
如果每次用WPS之前都這樣執(zhí)行一次,您是不是覺得很麻煩呢?
如果有一個方法,只需編寫一個批處理文件,就會自動執(zhí)行剛才的所有命令,您想不想學呢?
當您看完此節(jié),自己編寫的第一個批處理文件順利執(zhí)行時,您一定會大吃一驚的。
此外電腦每次啟動時都會尋找autoexec.bat這條批處理文件,從而可執(zhí)行一些每次開機都要執(zhí)行的命令,如設置路徑path、加載鼠標驅動mouse、磁盤加速smartdrv等,可以使您的電腦真正自動化。
echo、@、call、pause、rem 是批處理文件最常用的幾個命令,我們就從他們開始學起。 echo 表示顯示此命令后的字符 echo off 表示在此語句后所有運行的命令都不顯示命令行本身 @ 與echo off相象,但它是加在其它命令行的最前面,表示運行時不顯示命令行本身。 call 調用另一條批處理文件(如果直接調用別的批處理文件 ,執(zhí)行完那條文件后將無法執(zhí)行當前文件后續(xù)命令) pause 運行此句會暫停,顯示Press any key to continue... 等待用戶按任意鍵后繼續(xù) rem 表示此命令后的字符為解釋行,不執(zhí)行,只是給自己今后查找用的
例:用edit編輯a.bat文件,輸入下列內容后存盤為c:\a.bat,執(zhí)行該批處理文件后可實現:將根目錄中所有文件寫入 a.txt中,啟動UCDOS,進入WPS等功能。
批處理文件的內容為: 文件表示:
echo off 不顯示命令行
dir c:\*.* >a.txt 將c盤文件列表寫入a.txt
call c:\ucdos\ucdos.bat 調用ucdos
echo 你好 顯示“你好”
pause 暫停,等待按鍵繼續(xù)
rem 使用wps 注釋將使用wps
cd ucdos 進入ucdos目錄
wps 使用wps
批處理文件中還可以像C語言一樣使用參數,這只需用到一個參數表示符%。
%表示參數,參數是指在運行批處理文件時在文件名后加的字符串。變量可以從 %0到%9,%0表示文件名本身,字符串用%1到%9順序表示。
例如,C:根目錄下一批處理文件名為f.bat,內容為 format %1
則如果執(zhí)行C:\>f a: 則實際執(zhí)行的是format a:
又如C:根目錄下一批處理文件的名為t.bat,內容為 type %1 type %2
那么運行C:\>t a.txt b.txt 將順序地顯示a.txt和b.txt文件的內容
if goto choice for 是批處理文件中比較高級的命令,如果這幾個你用得很熟練,你就是批處理文件的專家啦。
if 表示將判斷是否符合規(guī)定的條件,從而決定執(zhí)行不同的命令。 有三種格式: 1、if “參數” == “字符串” 待執(zhí)行的命令 參數如果等于指定的字符串,則條件成立,運行命令,否則運行下一句。(注意是兩個等號) 如if “%1”== “a” format a:
2、if exist 文件名 待執(zhí)行的命令 如果有指定的文件,則條件成立,運行命令,否則運行下一句。如if exist config.sys edit config.sys
3、if errorlevel 數字 待執(zhí)行的命令 如果返回碼等于指定的數字,則條件成立,運行命令,否則運行下一句。如if errorlevel 2 goto x2 DOS程序運行時都會返回一個數字給DOS,稱為錯誤碼errorlevel或稱返回碼
goto 批處理文件運行到這里將跳到goto 所指定的標號處, 一般與if配合使用。 如:
goto end
:end echo this is the end
標號用 :字符串 表示,標號所在行不被執(zhí)行
choice 使用此命令可以讓用戶輸入一個字符,從而運行不同的命令。使用時應該加/c:參數,c:后應寫提示可輸入的字符,之間無空格。它的返回碼為1234……
如: choice /c:dme defrag,mem,end 將顯示 defrag,mem,end[D,M,E]?
例如,test.bat的內容如下: @echo off choice /c:dme defrag,mem,end if errorlevel 3 goto defrag 應先判斷數值最高的錯誤碼 if errorlevel 2 goto mem if errotlevel 1 goto end
:defrag c:\dos\defrag goto end
:mem mem goto end
:end echo good bye
此文件運行后,將顯示 defrag,mem,end[D,M,E]? 用戶可選擇d m e ,然后if語句將作出判斷,d表示執(zhí)行標號為defrag的程序段,m表示執(zhí)行標號為mem的程序段,e表示執(zhí)行標號為end的程序段,每個程序段最后都以goto end將程序跳到end標號處,然后程序將顯示good bye,文件結束。
for 循環(huán)命令,只要條件符合,它將多次執(zhí)行同一命令。
格式FOR [%%f] in (集合) DO [命令] 只要參數f在指定的集合內,則條件成立,執(zhí)行命令
如果一條批處理文件中有一行: for %%c in (*.bat *.txt) do type %%c 含義是如果是以bat或txt結尾的文件,則顯示文件的內容。
autoexec.bat
DOS在啟動會自動運行autoexec.bat這條文件,一般我們在里面裝載每次必用的程序,如: path(設置路徑)、smartdrv(磁盤加速)、 mouse(鼠標啟動)、mscdex(光驅連接)、 doskey(鍵盤管理)、set(設置環(huán)境變量)等。
如果啟動盤根目錄中沒有這個文件,電腦會讓用戶輸入日期和時間。
例如,一個典型的autoexec.bat內容如下:
@echo off 不顯示命令行
prompt $p$g 設置提示符前有目錄提示
path c:\dos;c:\;c:\windows;c:\ucdos;c:\tools 設置路徑
lh c:\dos\doskey.com 加載鍵盤管理
lh c:\mouse\mouse.com 加載鼠標管理
lh c:\dos\smartdrv.exe 加載磁盤加速管理
lh c:\dos\mscdex /S /D:MSCD000 /M:12 /V 加載CD-ROM驅動
set temp=c:\temp 設置臨時目錄
系統(tǒng)正常狀態(tài)下的進程和進程解釋
正常windows XP SP2每一個進程的含義---進程列表
正常windows XP SP2每一個進程的含義---進程列表--->
進程0:[System Process](優(yōu)先級:暫缺)5a 進程1:System(優(yōu)先級:標準)xf 進程2:\SystemRoot\System32\smss.exe(優(yōu)先級:標準)J'{ 進程3:CSRSS.EXE(優(yōu)先級:高)sE?b 進程4:\??\D:\WINDOWS\system32\winlogon.exe(優(yōu)先級:高)x,Y_7 進程5:D:\WINDOWS\system32\services.exe(優(yōu)先級:標準)7U9>p@ 進程6:D:\WINDOWS\system32\lsass.exe(優(yōu)先級:標準)Z?r_. 進程7:D:\WINDOWS\system32\svchost.exe(優(yōu)先級:標準)Nz 進程8:SVCHOST.EXE(優(yōu)先級:標準)CZO 進程9:D:\WINDOWS\System32\svchost.exe(優(yōu)先級:標準)yGh> 進程10:SVCHOST.EXE(優(yōu)先級:標準)o,&Y 進程11:SVCHOST.EXE(優(yōu)先級:標準)A 進程12:D:\WINDOWS\system32\spoolsv.exe(優(yōu)先級:標準)T 進程13:D:\WINDOWS\Explorer.EXE(優(yōu)先級:標準)i5d5 進程14:D:\WINDOWS\system32\ctfmon.exe(優(yōu)先級:標準)aeI 進程15:D:\WINDOWS\system32\crypserv.exe(優(yōu)先級:高)~^ 進程16:D:\WINDOWS\System32\inetsrv\inetinfo.exe(優(yōu)先級:標準)DF. 進程17:WDFMGR.EXE(優(yōu)先級:標準)g3Qg@ 進程18:ALG.EXE(優(yōu)先級:標準)f7Hfr 進程19:D:\WINDOWS\System32\svchost.exe(優(yōu)先級:標準)qM`!1_ 進程20:wmiprvse.exe(優(yōu)先級:標準)
---進程說明---j/hNx
進程0:[System Process]<)yYb 公司:g\!H 描述:X 版權:tq^3 文件版本:j 產品名稱:7m 產品版本:
進程1:SystemBF1}~_ 公司:1Q 描述:ls 版權:@ho=3r 文件版本:PFE 產品名稱:=+_\sF 產品版本
進程2:\SystemRoot\System32\smss.exe2Jm 公司:(:n 描述:s"jo7' 版權:Iek0b 文件版本:^Jr 產品名稱:gg6y2: 產品版本:
進程3:CSRSS.EXE* 公司:Microsoft Corporation\:e 描述:Client Server Runtime ProcessEk\K+[ 版權:? Microsoft Corporation. All rights reserved.r*t 文件版本:5.1.2600.2180 (xpsp_sp2_rtm.040803-2158))"A 產品名稱:Microsoft? Windows? Operating SystemuK 產品版本:5.1.2600.2180mX
.v[c 進程4:\??\D:\WINDOWS\system32\winlogon.exefHnA 公司: nF^&L 描述:wmv3 版權:@k 文件版本:-o` 產品名稱:EDm" 產品版本:
進程5:D:\WINDOWS\system32\services.exe|>n6 公司:Microsoft Corporation_ 描述:Services and Controller app-o4nu| 版權:(C) Microsoft Corporation. All rights reserved.xq( 文件版本:5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)y#\d` 產品名稱:Microsoft(R) Windows(R) Operating Systemj 產品版本:5.1.2600.2180K
進程6:D:\WINDOWS\system32\lsass.exeI 公司:Microsoft Corporationt$wb 描述:LSA Shell (Export Version)\/Z 版權:? Microsoft Corporation. All rights reserved.:9{=' 文件版本:5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)diO+s 產品名稱:Microsoft? Windows? Operating SystemK 產品版本:5.1.2600.2180\}
進程7:D:\WINDOWS\system32\svchost.exe`S3?公司:Microsoft Corporation_ 描述:Generic Host Process for Win32 Services!j} 版權:? Microsoft Corporation. All rights reserved.-}_" 文件版本:5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)U 產品名稱:Microsoft? Windows? Operating SystemN*uEO 產品版本:5.1.2600.2180P
進程8:SVCHOST.EXEcP}J 公司:Microsoft CorporationJ7Y 描述:Generic Host Process for Win32 Servicesms$^ 版權:? Microsoft Corporation. All rights reserved.n.+ 文件版本:5.1.2600.2180 (xpsp_sp2_rtm.040803-2158);*^eP 產品名稱:Microsoft? Windows? Operating System[ 產品版本:5.1.2600.2180\
進程9:D:\WINDOWS\System32\svchost.exeuhO 公司:Microsoft Corporatione8 描述:Generic Host Process for Win32 ServicesQwQN 版權:? Microsoft Corporation. All rights reserved.gim 文件版本:5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)w 產品名稱:Microsoft? Windows? Operating System=(1 產品版本:5.1.2600.2180N
進程10:SVCHOST.EXEy#-f 公司:Microsoft CorporationhMy} 描述:Generic Host Process for Win32 Servicesl,M 版權:? Microsoft Corporation. All rights reserved.%!-} 文件版本:5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)Jwg2 產品名稱:Microsoft? Windows? Operating SystemuER 產品版本:5.1.2600.2180\
進程11:SVCHOST.EXE] 公司:Microsoft CorporationhC&>?1 描述:Generic Host Process for Win32 Services2e&ZnS 版權:? Microsoft Corporation. All rights reserved.A"]ndF 文件版本:5.1.2600.2180 (xpsp_sp2_rtm.040803-2158):'j_`$ 產品名稱:Microsoft? Windows? Operating Systemb 產品版本:5.1.2600.2180j
進程12:D:\WINDOWS\system32\spoolsv.exe,U`? 公司:Microsoft Corporation Rz 描述:Spooler SubSystem App5~+m~ 版權:? Microsoft Corporation. All rights reserved.Rh_c 文件版本:5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)F 產品名稱:Microsoft? Windows? Operating System7Cx{pT 產品版本:5.1.2600.2180P
進程13:D:\WINDOWS\Explorer.EXEH4vJ| 公司:Microsoft CorporationXkY 描述:Windows Explorer.YHP 版權:(C) Microsoft Corporation. All rights reserved.$=ql!? 文件版本:6.00.2900.2180 (xpsp_sp2_rtm.040803-2158)>5})V 產品名稱:Microsoft(R) Windows(R) Operating Systemwg 產品版本:6.00.2900.2180l2^:
進程14:D:\WINDOWS\system32\ctfmon.exeT9X 公司:Microsoft Corporationpv 描述:CTF Loader`jVUz! 版權:? Microsoft Corporation. All rights reserved.H)SdL[ 文件版本:5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)i)q% 產品名稱:Microsoft? Windows? Operating SystemR-F 產品版本:5.1.2600.2180>
進程15:D:\WINDOWS\system32\crypserv.exesg( 公司:Kenonic Controls Ltd.F-[ 描述:CrypKey NT ServiceE^~&^Z 版權:Copyright ? 2000h)Y 文件版本:5.4.0R\8z_1 產品名稱:CrypKey Software Licensing System50"H]7 產品版本:5.4"sq`
進程16:D:\WINDOWS\System32\inetsrv\inetinfo.exeZxvi_? 公司:Microsoft Corporation<MF
最基本的系統(tǒng)進程(也就是說,這些進程是系統(tǒng)運行的基本條件,有了這些進程,系統(tǒng)就能正常運行): smss.exe Session Manager csrss.exe 子系統(tǒng)服務器進程 winlogon.exe 管理用戶登錄 services.exe 包含很多系統(tǒng)服務 lsass.exe 管理 IP 安全策略以及啟動 ISAKMP/Oakley (IKE) 和 IP 安全驅動程序。(系統(tǒng)服務) 產生會話密鑰以及授予用于交互式客戶/服務器驗證的服務憑據(ticket)。(系統(tǒng)服務) svchost.exe 包含很多系統(tǒng)服務 svchost.exe SPOOLSV.EXE 將文件加載到內存中以便遲后打印。(系統(tǒng)服務) explorer.exe 資源管理器 internat.exe 托盤區(qū)的拼音圖標 附加的系統(tǒng)進程(這些進程不是必要的,你可以根據需要通過服務管理器來增加或減少): mstask.exe 允許程序在指定時間運行。(系統(tǒng)服務) regsvc.exe 允許遠程注冊表操作。(系統(tǒng)服務) winmgmt.exe 提供系統(tǒng)管理信息(系統(tǒng)服務)。 inetinfo.exe 通過 Internet 信息服務的管理單元提供 FTP 連接和管理。(系統(tǒng)服務) tlntsvr.exe 允許遠程用戶登錄到系統(tǒng)并且使用命令行運行控制臺程序。(系統(tǒng)服務) 允許通過 Internet 信息服務的管理單元管理 Web 和 FTP 服務。(系統(tǒng)服務) tftpd.exe 實現 TFTP Internet 標準。該標準不要求用戶名和密碼。遠程安裝服務的一部分。(系統(tǒng)服務) termsrv.exe 提供多會話環(huán)境允許客戶端設備訪問虛擬的 Windows 2000 Professional 桌面會話以及運行在服務器上的基于 Windows 的程序。(系統(tǒng)服務) dns.exe 應答對域名系統(tǒng)(DNS)名稱的查詢和更新請求。(系統(tǒng)服務) 以下服務很少會用到,上面的服務都對安全有害,如果不是必要的應該關掉tcpsvcs.exe 提供在 PXE 可遠程啟動客戶計算機上遠程安裝 Windows 2000 Professional 的能力。(系統(tǒng)服務) 支持以下 TCP/IP 服務:Character Generator, Daytime, Discard, Echo, 以及 Quote of the Day。(系統(tǒng)服務) ismserv.exe 允許在 Windows Advanced Server 站點間發(fā)送和接收消息。(系統(tǒng)服務) ups.exe 管理連接到計算機的不間斷電源(UPS)。(系統(tǒng)服務) wins.exe 為注冊和解析 NetBIOS 型名稱的 TCP/IP 客戶提供 NetBIOS 名稱服務。(系統(tǒng)服務) llssrv.exe License Logging Service(system service) ntfrs.exe 在多個服務器間維護文件目錄內容的文件同步。(系統(tǒng)服務) RsSub.exe 控制用來遠程儲存數據的媒體。(系統(tǒng)服務) locator.exe 管理 RPC 名稱服務數據庫。(系統(tǒng)服務) lserver.exe 注冊客戶端許可證。(系統(tǒng)服務) dfssvc.exe 管理分布于局域網或廣域網的邏輯卷。(系統(tǒng)服務) clipsrv.exe 支持“剪貼簿查看器”,以便可以從遠程剪貼簿查閱剪貼頁面。(系統(tǒng)服務) msdtc.exe 并列事務,是分布于兩個以上的數據庫,消息隊列,文件系統(tǒng),或其它事務保護資源管理器。(系統(tǒng)服務) faxsvc.exe 幫助您發(fā)送和接收傳真。(系統(tǒng)服務) cisvc.exe Indexing Service(system service) dmadmin.exe 磁盤管理請求的系統(tǒng)管理服務。(系統(tǒng)服務) mnmsrvc.exe 允許有權限的用戶使用 NetMeeting 遠程訪問 Windows 桌面。(系統(tǒng)服務) netdde.exe 提供動態(tài)數據交換 (DDE) 的網絡傳輸和安全特性。(系統(tǒng)服務) smlogsvc.exe 配置性能日志和警報。(系統(tǒng)服務) rsvp.exe 為依賴質量服務(QoS)的程序和控制應用程序提供網絡信號和本地通信控制安裝功能。(系統(tǒng)服務) RsEng.exe 協(xié)調用來儲存不常用數據的服務和管理工具。(系統(tǒng)服務) RsFsa.exe 管理遠程儲存的文件的操作。(系統(tǒng)服務) grovel.exe 掃描零備份存儲(SIS)卷上的重復文件,并且將重復文件指向一個數據存儲點,以節(jié)省磁盤空間。(系統(tǒng)服務) SCardSvr.exe 對插入在計算機智能卡閱讀器中的智能卡進行管理和訪問控制。(系統(tǒng)服務) snmp.exe 包含代理程序可以監(jiān)視網絡設備的活動并且向網絡控制臺工作站匯報。(系統(tǒng)服務) snmptrap.exe 接收由本地或遠程 SNMP 代理程序產生的陷阱消息,然后將消息傳遞到運行在這臺計算機上 SNMP 管理程序。(系統(tǒng)服務) UtilMan.exe 從一個窗口中啟動和配置輔助工具。(系統(tǒng)服務) msiexec.exe 依據 .MSI 文件中包含的命令來安裝、修復以及刪除軟件。(系統(tǒng)服務)
詳細說明:
win2k運行進程 Svchost.exe Svchost.exe文件對那些從動態(tài)連接庫中運行的服務來說是一個普通的主機進程名。Svhost.exe文件定位在系統(tǒng)的%systemroot%\system32文件夾下。在啟動的時候,Svchost.exe檢查注冊表中的位置來構建需要加載的服務列表。這就會使多個Svchost.exe在同一時間運行。每個Svchost.exe的回話期間都包含一組服務, 以至于單獨的服務必須依靠Svchost.exe怎樣和在那里啟動。這樣就更加容易控制和查找錯誤。 Svchost.exe 組是用下面的注冊表值來識別。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost 每個在這個鍵下的值代表一個獨立的Svchost組,并且當你正在看活動的進程時,它顯示作為一個單獨的例子。每個鍵值都是REG_MULTI_SZ類型的值而且包括運行在Svchost組內的服務。每個Svchost組都包含一個或多個從注冊表值中選取的服務名,這個服務的參數值包含了一個ServiceDLL值。 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Service 更多的信息 為了能看到正在運行在Svchost列表中的服務。 開始-運行-敲入cmd 然后在敲入 tlist -s (tlist 應該是win2k工具箱里的冬冬) Tlist 顯示一個活動進程的列表。開關 -s 顯示在每個進程中的活動服務列表。如果想知道更多的關于進程的信息,可以敲 tlist pid。
Tlist 顯示Svchost.exe運行的兩個例子。 0 System Process 8 System 132 smss.exe 160 csrss.exe Title: 180 winlogon.exe Title: NetDDE Agent 208services.exe Svcs:
AppMgmt,Browser,Dhcp,dmserver,Dnscache,Eventlog,lanmanserver,LanmanWorkstation,LmHost
s,Messenger,PlugPlay,ProtectedStorage,seclogon,TrkWks,W32Time,Wmi 220 lsass.exe Svcs: Netlogon,PolicyAgent,SamSs 404 svchost.exe Svcs: RpcSs 452 spoolsv.exe Svcs: Spooler 544 cisvc.exe Svcs: cisvc 556 svchost.exe Svcs: EventSystem,Netman,NtmsSvc,RasMan,SENS,TapiSrv 580 regsvc.exe Svcs: RemoteRegistry 596 mstask.exe Svcs: Schedule 660 snmp.exe Svcs: SNMP 728 winmgmt.exe Svcs: WinMgmt 852 cidaemon.exe Title: OleMainThreadWndName 812 explorer.exe Title: Program Manager 1032 OSA.EXE Title: Reminder 1300 cmd.exe Title: D:\WINNT5\System32\cmd.exe - tlist -s 1080 MAPISP32.EXE Title: WMS Idle 1264 rundll32.exe Title: 1000 mmc.exe Title: Device Manager 1144 tlist.exe 在這個例子中注冊表設置了兩個組。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost: netsvcs: Reg_Multi_SZ: EventSystem Ias Iprip Irmon Netman Nwsapagent Rasauto Rasman
Remoteaccess SENS Sharedaccess Tapisrv Ntmssvc rpcss :Reg_Multi_SZ: RpcSs
smss.exe
csrss.exe
這個是用戶模式Win32子系統(tǒng)的一部分。csrss代表客戶/服務器運行子系統(tǒng)而且是一個基本的子系統(tǒng)必須一直運行。csrss 負責控制windows,創(chuàng)建或者刪除線程和一些16位的虛擬MS-DOS環(huán)境。
explorer.exe 這是一個用戶的shell(我實在是不知道怎么翻譯shell),在我們看起來就像任務條,桌面等等。這個進程并不是像你想象的那樣是作為一個重要的進程運行在windows中,你可以從任務管理器中停掉它,或者重新啟動。 通常不會對系統(tǒng)產生什么負面影響。
internat.exe
這個進程是可以從任務管理器中關掉的。 internat.exe在啟動的時候開始運行。它加載由用戶指定的不同的輸入點。輸入點是從注冊表的
這個位置 HKEY_USERS\.DEFAULT\Keyboard Layout\Preload 加載內容的。 internat.exe 加載“EN”圖標進入系統(tǒng)的圖標區(qū),允許使用者可以很容易的轉換不同的輸入點。 當進程停掉的時候,圖標就會消失,但是輸入點仍然可以通過控制面板來改變。
lsass.exe 這個進程是不可以從任務管理器中關掉的。 這是一個本地的安全授權服務,并且它會為使用winlogon服務的授權用戶生成一個進程。這個進程是 通過使用授權的包,例如默認的msgina.dll來執(zhí)行的。如果授權是成功的,lsass就會產生用戶的進入 令牌,令牌別使用啟動初始的shell。其他的由用戶初始化的進程會繼承這個令牌的。
mstask.exe 這個進程是不可以從任務管理器中關掉的。 這是一個任務調度服務,負責用戶事先決定在某一時間運行的任務的運行。
smss.exe 這個進程是不可以從任務管理器中關掉的。 這是一個會話管理子系統(tǒng),負責啟動用戶會話。這個進程是通過系統(tǒng)進程初始化的并且對許多活
動的, 包括已經正在運行的Winlogon,Win32(Csrss.exe)線程和設定的系統(tǒng)變量作出反映。在它啟動
這些 進程后,它等待Winlogon或者Csrss結束。如果這些過程時正常的,系統(tǒng)就關掉了。如果發(fā)生了什
么 不可預料的事情,smss.exe就會讓系統(tǒng)停止響應(就是掛起)。
spoolsv.exe 這個進程是不可以從任務管理器中關掉的。 緩沖(spooler)服務是管理緩沖池中的打印和傳真作業(yè)。
service.exe 這個進程是不可以從任務管理器中關掉的。 大多數的系統(tǒng)核心模式進程是作為系統(tǒng)進程在運行。
System Idle Process 這個進程是不可以從任務管理器中關掉的。 這個進程是作為單線程運行在每個處理器上,并在系統(tǒng)不處理其他線程的時候分派處理器的時間
。
taskmagr.exe 這個進程是可以在任務管理器中關掉的。 這個進程就是任務管理器。
winlogon.exe 這個進程是管理用戶登錄和推出的。而且winlogon在用戶按下CTRL+ALT+DEL時就激活了,顯示安
全對話框。
winmgmt.exe winmgmt是win2000客戶端管理的核心組件。當客戶端應用程序連接或當管理程序需要他本身的服務時這個進程初始化
taskkill說明
用于結束進程的DOS命令
TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]
描述: 這個命令行工具可用來結束至少一個進程。 可以根據進程 id 或圖像名來結束進程。
參數列表: /Ssystem 指定要連接到的遠程系統(tǒng)。
/U[domain\]user指定應該在哪個用戶上下文 執(zhí)行這個命令。
/P[password] 為提供的用戶上下文指定 密碼。如果忽略,提示輸入。
/F 指定要強行終止 進程。
/FI filter 指定篩選進或篩選出查詢的 的任務。
/PIDprocess id 指定要終止的進程的 PID。
/IM image name 指定要終止的進程的 圖像名。通配符 '*' 可用來指定所有圖像名。
/T Tree kill: 終止指定的進程 和任何由此啟動的子進程。
/? 顯示幫助/用法。
篩選器: 篩選器名有效運算符有效值 ----------- --------------- -------------- STATUSeq, ne運行 | 沒有響應 IMAGENAME eq, ne圖像名 PID eq, ne, gt, lt, ge, lePID 值 SESSION eq, ne, gt, lt, ge, le會話編號 CPUTIME eq, ne, gt, lt, ge, leCPU 時間,格式為 hh:mm:ss。 hh - 時, mm - 鐘,ss - 秒 MEMUSAGEeq, ne, gt, lt, ge, le內存使用,單位為 KB USERNAMEeq, ne用戶名,格式為 [domain\]user MODULES eq, neDLL 名 SERVICESeq, ne服務名 WINDOWTITLE eq, ne窗口標題
注意: 只有帶有篩選器的情況下,才能跟 /IM 切換使用通配符 '*'。
注意: 遠程進程總是要強行終止, 不管是否指定了 /F 選項。
例如: TASKKILL /S system /F /IM notepad.exe /T TASKKILL /PID 1230 /PID 1241 /PID 1253 /T TASKKILL /F /IM notepad.exe /IM mspaint.exe TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*" TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM * TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
Windows DOs命令之Taskkill
語法 taskkill [/s Computer] [/u Domain\User [/p Password]]] [/fi FilterName] [/pid ProcessID]|[/im ImageName] [/f][/t]
參數 /s Computer 指定遠程計算機名稱或 IP 地址(不能使用反斜杠)。默認值是本地計算機。 /u Domain\User 運行具有由 User 或 Domain\User 指定用戶的帳戶權限命令。默認值是當前登錄發(fā)布命令的計算機的用戶權限。 /p Password 指定用戶帳戶的密碼,該用戶帳戶在 /u 參數中指定。 /fi FilterName 指定將要終止或不終止的過程的類型。以下是有效的篩選器名稱、運算符和值: 名稱 運算符 值 Hostname eq, ne 任何有效字符串。 狀態(tài) eq, ne RUNNING|NOT RESPONDING Imagename eq, ne 任何有效字符串。 PID eg, ne, gt, lt, ge, le 任何有效的正整數。 Session eg, ne, gt, lt, ge, le 任何有效的會話數。 CPUTime eq, ne, gt, lt, ge, le hh:mm:ss 格式的有效時間。mm 參數和 ss 參數應在 0 到 59 之間,hh 參數可以是任何一個有效的無符號的數值。 Memusage eg, ne, gt, lt, ge, le 任何有效的整數。 用戶名 eq, ne 任何有效的用戶名 ([Domain\]User)。 服務 eq, ne 任何有效字符串。 Windowtitle eq, ne 任何有效字符串。
/pid ProcessID 指定將終止的過程的過程 ID。 /im ImageName 指定將終止的過程的圖像名稱。使用通配符 (*) 指定所有圖像名稱。 /f 指定將強制終止的過程。對于遠程過程可忽略此參數,所有遠程過程都將被強制終止。 /t 指定終止與父進程一起的所有子進程,常被認為是“樹終止”。 /? 在命令提示符顯示幫助。 注釋 只有與篩選器一起指定時,通配符 (*) 才能被接受。 無論是否指定 /f 參數,都會始終強制執(zhí)行對遠程過程的終止操作。 向 HOSTNAME 篩選器提供計算機名將導致關機和中止所有過程。 使用 tasklist 確定要終止的過程的過程 ID (PID)。 Taskkill 替代了 Kill 工具。 范例 下面的范例說明如何使用 taskkill 命令:
taskkill /pid 1230 /pid 1241 /pid 1253 taskkill /f /fi "USERNAME eq NT AUTHORITY\SYSTEM" /im notepad.exe taskkill /s srvmain /f /im notepad.exe taskkill /s srvmain /u maindom\hiropln /p p@ssW23 /fi "IMAGENAME eq note*" /im * taskkill /s srvmain /u maindom\hiropln /fi "USERNAME ne NT*" /im * taskkill /f /fi "PID ge 1000" /im * Tasklist命令用來顯示運行在本地或遠程計算機上的所有進程,帶有多個執(zhí)行參數。
使用格式 Tasklist [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]
參數含義 /S system 指定連接到的遠程系統(tǒng)。
/U [domain\]user 指定使用哪個用戶執(zhí)行這個命令。
/P [password] 為指定的用戶指定密碼。
/M [module] 列出調用指定的DLL模塊的所有進程。如果沒有指定模塊名,顯示每個進程加載的所有模塊。
/SVC 顯示每個進程中的服務。
/V 顯示詳細信息。
/FI filter 顯示一系列符合篩選器指定的進程。
/FO format 指定輸出格式,有效值:TABLE、LIST、CSV。
/NH 指定輸出中不顯示欄目標題。只對TABLE和CSV格式有效。
應用實例。 1.查看本機進程 在“命令提示符”中輸入Tasklist命令即可顯示本機的所有進程(圖1)。本機的顯示結果由5部分組成:圖像名(進程名)、PID、會話名、會話#和內存使用。
2.查看遠程系統(tǒng)的進程 在命令提示符下輸入“Tasklist /s 218.22.123.26 /u jtdd /p 12345678”(不包括引號)即可查看到IP地址為218.22.123.26的遠程系統(tǒng)的進程(圖2)。其中/s參數后的“218.22.123.26”指要查看的遠程系統(tǒng)的IP地址,/u后的“jtdd”指Tasklist命令使用的用戶賬號,它必須是遠程系統(tǒng)上的一個合法賬號,/p后的“12345678”指jtdd賬號的密碼。 注意:使用Tasklist命令查看遠程系統(tǒng)的進程時,需要遠程機器的RPC服務的支持,否則,該命令不能正常使用。
3.查看系統(tǒng)進程提供的服務 Tasklist命令不但可以查看系統(tǒng)進程,而且還可以查看每個進程提供的服務。如查看本機進程SVCHOST.EXE提供的服務,在命令提示符下輸入“Tasklist /svc”命令即可(圖3)。你會驚奇地發(fā)現,有4個SVCHOST.EXE進程,而總共有二十幾項服務使用這個進程。 對于遠程系統(tǒng)來說,查看系統(tǒng)服務也很簡單,使用“Tasklist /s 218.22.123.26 /u jtdd /p 12345678 /svc”命令,就可以查看IP地址為218.22.123.26的遠程系統(tǒng)進程所提供的服務。
4.查看調用DLL模塊文件的進程列表 要查看本地系統(tǒng)中哪些進程調用了shell32.dll模塊文件,只需在命令提示符下輸入“Tasklist /m shell32.dll”即可顯示這些進程的列表。
5.使用篩選器查找指定的進程 在命令提示符下輸入“TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running”,就可以列出系統(tǒng)中正在運行的非SYSTEM狀態(tài)的所有進程。其中“/FI”為篩選器參數,“ne”和“eq”為關系運算符“不相等”和“相等”。
小提示 談到“Tasklist”命令,我們就不得不提到它的孿生兄弟“Taskkill”命令,顧名思義,它是用來關掉進程的。 要關掉本機的notepad.exe進程,有兩種方法: 1.先使用Tasklist查找它的PID,假設系統(tǒng)顯示本機notepad.exe進程的PID值為1132,然后運行“Taskkill /pid 1132”命令即可。其中“/pid”參數后面是要終止進程的PID值。 2.直接運行“Taskkill /IM notepad.exe”命令,其中“/IM”參數后面為進程的圖像名。
================ 查看本地進程:tasklist /svc 查殺本地進程:taskkill /pid taskkill /im explorer.exe /f taskkill /im wscript.exe 查看遠程計算機進程:tasklist /s 192.168.1.160 /u administrator
結束一個或多個任務或進程。可以根據進程 ID 或圖像名來結束進程。
|
0 tasklist 列出進程列表。 1 tskill 終止不帶后綴的進程,如:tskill notepad。 2 taskkill 終止帶后綴的進程,如:taskkill /im test1.exe。taskkill的具體參數說明如下: TASKKILL [/S system ]]] { [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]描述:這個命令行工具可用來結束至少一個進程。可以根據進程 id 或圖像名來結束進程。參數列表:/S system 指定要連接到的遠程系統(tǒng)。/U [domain\]user 指定應該在哪個用戶上下文執(zhí)行這個命令。/P [password] 為提供的用戶上下文指定密碼。如果忽略,提示輸入。/F 指定要強行終止進程。/FI filter 指定篩選進或篩選出查詢的的任務。/PID process id 指定要終止的進程的PID。/IM image name 指定要終止的進程的圖像名。通配符 '*'可用來指定所有圖像名。/T Tree kill: 終止指定的進程和任何由此啟動的子進程。/? 顯示幫助/用法。篩選器:篩選器名 有效運算符 有效值----------- --------------- --------------STATUS eq, ne 運行 | 沒有響應IMAGENAME eq, ne 圖像名PID eq, ne, gt, lt, ge, le PID 值SESSION eq, ne, gt, lt, ge, le 會話編號CPUTIME eq, ne, gt, lt, ge, le CPU 時間,格式為hh:mm:ss。hh - 時,mm - 鐘,ss - 秒MEMUSAGE eq, ne, gt, lt, ge, le 內存使用,單位為 KBUSERNAME eq, ne 用戶名,格式為[domain\]userMODULES eq, ne DLL 名SERVICES eq, ne 服務名WINDOWTITLE eq, ne 窗口標題注意: 只有帶有篩選器的情況下,才能跟 /IM 切換使用通配符 '*'。注意: 遠程進程總是要強行終止,不管是否指定了 /F 選項。例如:TASKKILL /S system /F /IM notepad.exe /TTASKKILL /PID 1230 /PID 1241 /PID 1253 /TTASKKILL /F /IM notepad.exe /IM mspaint.exeTASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exeTASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"Hostname eq, ne 任何有效字符串。 狀態(tài) eq, ne RUNNING|NOT RESPONDING magename eq, ne 任何有效字符串。 PID eg, ne, gt, lt, ge, le 任何有效的正整數。 Session eg, ne, gt, lt, ge, le 任何有效的會話數。 CPUTime eq, ne, gt, lt, ge, le hh:mm:ss 格式的有效時間。mm 參數和 ss 參數應在 0 到 59 之間,hh 參數可以是任何一個有效的無符號的數值。 Memusage eg, ne, gt, lt, ge, le 任何有效的整數。 其中eq為等于,ne為不等于
|