不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學習啦>學習電腦>網(wǎng)絡知識>網(wǎng)絡基礎知識>

批處理文件

時間: 春健736 分享

  批處理,顧名思義就是進行批量的處理。批處理文件是擴展名為·bat 或·cmd的文本文件,包含一條或多條命令,由DOS或Windows系統(tǒng)內(nèi)嵌的命令解釋器來解釋運行。。學習啦小編給大家分享一下批處理文件怎么設置的方法。希望大家喜歡!

  批處理文件參考如下:

  批處理文件是一種簡單的可執(zhí)行文件,常常用來執(zhí)行清理或簡單的安裝命令,下面我們來看一個練習;

  1、批處理文件

  1)批處理文件的圖標是一個齒輪窗口圖標

  ,雙擊運行后會出來一個黑色命令行窗口;

  2)在批處理文件圖標上點右鍵,里面有一個“編輯”命令,可以查看文件的內(nèi)容;

  2、批處理命令

  1)echo 是顯示命令,它后面的文字會原樣顯示在命令行窗口里,前面加上“@”則會隱藏,

  比如: echo 正在完成,請稍等...

  2)del 是刪除命令,可以刪除指定的文件,星號“*”代表所有文件,

  比如: echo del *.tmp

  3)rd 是刪除文件夾命令,可以刪除指定文件夾;(更多電腦知識,計算機基礎知識入門,請到http://www.pc6c.com電腦知識網(wǎng))

  4)pause 暫停命令,這時候按按一下回車鍵或空格鍵就可以繼續(xù);

  5)可以用記事本來創(chuàng)建批處理文件,每行輸入一句命令,保存的時候以.bat為文件名,類型選所有文件;

  ;

  一、基礎語法:

  1.批處理文件是一個“.bat”結(jié)尾的文本文件,這個文件的每一行都是一條DOS命令??梢允褂萌魏挝谋疚募庉嫻ぞ邉?chuàng)建和修改。

  2.批處理是一種簡單的程序,可以用 if 和 goto 來控制流程,也可以使用 for 循環(huán)。

  3.批處理的編程能力遠不如C語言等編程語言,也十分不規(guī)范。

  4.每個編寫好的批處理文件都相當于一個DOS的外部命令,把它所在的目錄放到DOS搜索路徑(path)中,即可在任意位置運行。

  5.C:\AUTOEXEC.BAT 是每次系統(tǒng)啟動時都會自動運行的,可以將每次啟動時都要運行的命令放入該文件中。

  6.大小寫不敏感(命令符忽略大小寫)

  7.批處理的文件擴展名為 .bat 或 .cmd。

  8.在命令提示下鍵入批處理文件的名稱,或者雙擊該批處理文件,系統(tǒng)就會調(diào)用Cmd.exe來運行該文件。

  二、參數(shù):

  1) 系統(tǒng)參數(shù)

  %SystemRoot% === C:\WINDOWS (%windir% 同樣)

  %ProgramFiles% === C:\Program Files

  %USERPROFILE% === C:\Documents and Settings\Administrator (子目錄有“桌面”,“開始菜單”,“收藏夾”等)

  %APPDATA% === C:\Documents and Settings\Administrator\Application Data

  %TEMP% === C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp (%TEM% 同樣)

  %APPDATA% === C:\Documents and Settings\Administrator\Application Data

  %OS% === Windows_NT (系統(tǒng))

  %Path% === %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem (原本的設置)

  %HOMEDRIVE% === C: (系統(tǒng)盤)

  %HOMEPATH% === \Documents and Settings\Administrator

  :: 枚舉當前的環(huán)境變量

  setlocal enabledelayedexpansion

  FOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i !%%i!

  2) 傳遞參數(shù)給批處理文件

  %[1-9]表示參數(shù),參數(shù)是指在運行批處理文件時在文件名后加的以空格(或者Tab)分隔的字符串。

  變量可以從%0到%9,%0表示批處理命令本身,其它參數(shù)字符串用 %1 到 %9 順序表示。

  Sample:

  call test2.bat "hello" "haha" (執(zhí)行同目錄下的“test2.bat”文件,并輸入兩個參數(shù))

  在“test2.bat”文件里寫:

  echo %1 (打印: "hello")

  echo %2 (打印: "haha")

  echo %0 (打印: test2.bat)

  echo %19 (打印: "hello"9)

  三、批處理基本命令

  0. help 命令

  /? 命令

  語法: 命令 /?

  可顯示此命令的幫助信息

  Sample: type /? >>tmp.txt (把 type 命令的幫助信息寫入到tmp.txt文件里)

  Sample: help type (顯示跟“type /?”一樣)

  1.Echo 命令

  語法: echo [{on|off}] [message]

  ECHO [ON | OFF] 打開回顯或關閉回顯功能。

  ECHO 顯示當前回顯設置。

  ECHO [message] 顯示信息。

  echo off 表示在此語句后所有運行的命令都不顯示命令行本身;默認是on,on時會顯示如: C:\文件夾路徑>命令行。

  在實際應用中我們會把這條命令和重定向符號( 也稱為管道符號,一般用 > >> ^ )結(jié)合來實現(xiàn)輸入一些命令到特定格式的文件中。

  Sample: echo off

  Sample: echo hello world (顯示出“hello world”)

  Sample: echo Windows Registry Editor Version 5.00 > c:\setupreg.reg (此前還沒有 setupreg.reg 這個文件)

  Sample: echo "SourcePath"="D:\Win2003\" >> c:\setupreg.reg (追加內(nèi)容進 setupreg.reg 這個文件)

  2.@ 命令

  表示不顯示@后面的命令,(在入侵過程中自然不能讓對方看到你使用的命令啦)

  @ 與 echo off 相象,但它是加在每個命令行的最前面,表示運行時不顯示這一行的命令行(只能影響當前行)。

  Sample: @echo off (此語句常用于開頭,表示不顯示所有的命令行信息,包括此句)

  Sample: @echo please wait a minite...

  Sample: @format X: /q/u/autoset

  (format 這個命令是不可以使用/y這個參數(shù)的,可喜的是微軟留了個autoset這個參數(shù)給我們,效果和/y是一樣的。)

  3.Goto 命令

  語法:goto label (label是參數(shù),指定所要轉(zhuǎn)向的批處理程序中的行。)

  指定跳轉(zhuǎn)到標簽行,找到標簽行后,程序?qū)⑻幚韽南乱恍虚_始的命令。

  label標簽的名字可以隨便起,但是最好是有意義的,字母前必須加個冒號“:”來表示這個字母是標簽。

  goto命令就是根據(jù)這個冒號來尋找下一步跳到到那里。經(jīng)常與 if 配合使用,根據(jù)不同的條件來執(zhí)行不同的命令組。

  例題見“5.Pause 命令”

  4.Rem 命令

  語法:Rem Message...

  (小技巧:用::代替rem)

  注釋命令,在C語言中相當與/*...*/,它并不會被執(zhí)行,只是起一個注釋的作用,便于別人閱讀和自己日后修改。

  Sample:@Rem Here is the description.

  5.Pause 命令

  會暫停批處理的執(zhí)行并在屏幕上顯示Press any key to continue...的提示,等待用戶按任意鍵后繼續(xù)

  Sample:

  @echo off

  :begin

  copy a:*.* d:\back

  echo Please put a new disk into driver A

  pause

  goto begin

  在這個例子中,驅(qū)動器 A 中磁盤上的所有文件均復制到d:\back中。

  顯示的信息提示您將另一張磁盤放入驅(qū)動器 A 時,pause 命令會使程序掛起,以便您更換磁盤,然后按任意鍵再次復制。

  6.Call 命令

  語法: call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]

  參數(shù): [Drive:][Path] FileName 指定要調(diào)用的批處理程序的位置和名稱。filename 參數(shù)必須具有 .bat 或 .cmd 擴展名。

  調(diào)用另一個批處理程序,并且不終止父批處理程序。

  如果不用call而直接調(diào)用別的批處理文件,那么執(zhí)行完那個批處理文件后將無法返回當前文件并執(zhí)行當前文件的后續(xù)命令。

  call 命令接受用作調(diào)用目標的標簽。如果在腳本或批處理文件外使用 Call,它將不會在命令行起作用。

  Sample:call="%cd%\test2.bat" haha kkk aaa (調(diào)用指定目錄下的 test2.bat,且輸入3個參數(shù)給他)

  Sample:call test2.bat arg1 arg2 (調(diào)用同目錄下的 test2.bat,且輸入2個參數(shù)給他)

  注:可以調(diào)用自身(死循環(huán)、遞歸)

  7.start 命令

  調(diào)用外部程序,所有的 DOS命令 和 命令行程序 都可以由 start命令 來調(diào)用。

  入侵常用參數(shù):

  MIN 開始時窗口最小化

  SEPARATE 在分開的空間內(nèi)開始 16 位 Windows 程序

  HIGH 在 HIGH 優(yōu)先級類別開始應用程序

  REALTIME 在 REALTIME 優(yōu)先級類別開始應用程序

  WAIT 啟動應用程序并等候它結(jié)束

  parameters 這些為傳送到命令/程序的參數(shù)

  Sample:start /MIN test2.bat arg1 arg2 (調(diào)用同目錄下的 test2.bat,且輸入2個參數(shù)給他,且本窗口最小化)

  Sample:e:\"program files"\極品列車時刻表\jpskb.exe (文件路徑名有空格時)

  8.If 命令

  if 表示將判斷是否符合規(guī)定的條件,從而決定執(zhí)行不同的命令。有三種格式:

  1) IF

  語法: if [not] "參數(shù)" == "字符串" 待執(zhí)行的命令

  參數(shù)如果等于(not表示不等,下同)指定的字符串,則條件成立,運行命令,否則運行下一句。(注意是兩個等號)

  Sample: if "%1" == "a" format a:

  Sample: if {%1} == {} goto noparms

  2) if exist

  語法: if [not] exist [路徑\]文件名 待執(zhí)行的命令

  如果有指定的文件,則條件成立,運行命令,否則運行下一句。

  Sample: if exist config.sys edit config.sys (表示如果存在這文件,則編輯它,用很難看的系統(tǒng)編輯器)

  Sample: if exist config.sys type config.sys (表示如果存在這文件,則顯示它的內(nèi)容)

  3) if errorlevel number

  語法: if [not] errorlevel <數(shù)字> 待執(zhí)行的命令

  如果程序返回值等于指定的數(shù)字,則條件成立,運行命令,否則運行下一句。(返回值必須按照從大到小的順序排列)

  Sample:

  @echo off

  XCOPY F:\test.bat D:\

  IF ERRORLEVEL 1 (ECHO 文件拷貝失敗

  ) Else IF ERRORLEVEL 0 ECHO 成功拷貝文件

  pause

  很多DOS程序在運行結(jié)束后會返回一個數(shù)字值用來表示程序運行的結(jié)果(或者狀態(tài)),稱為錯誤碼errorlevel或稱返回碼。

  常見的返回碼為0、1。通過if errorlevel命令可以判斷程序的返回值,根據(jù)不同的返回值來決定執(zhí)行不同的命令。

  4) else

  語法: if 條件 (成立時執(zhí)行的命令) else (不成立時執(zhí)行的命令)

  如果是多個條件,建議適當使用括號把各條件包起來,以免出錯。

  Sample: if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3 )

  注:如果 else 的語句需要換行,if 執(zhí)行的行尾需用“^”連接,并且 if 執(zhí)行的動作需用(括起來),否則報錯

  Sample: if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) ^

  else (echo comment3 )

  5) 比較運算符:

  EQU - 等于 (一般使用“==”)

  NEQ - 不等于 (沒有 “!=”,改用“ if not 1==1 ”的寫法)

  LSS - 小于

  LEQ - 小于或等于

  GTR - 大于

  GEQ - 大于或等于

  9.choice 命令

  choice 使用此命令可以讓用戶輸入一個字符(用于選擇),從而根據(jù)用戶的選擇返回不同的 errorlevel,

  然后配合 if errorlevel 選擇運行不同的命令。

  注意:choice命令為DOS或者Windows系統(tǒng)提供的外部命令,不同版本的choice命令語法會稍有不同,請用choice /?查看用法。

  choice 使用此命令可以讓用戶輸入一個字符,從而運行不同的命令。

  使用時應該加/c:參數(shù),c:后應寫提示可輸入的字符,之間無空格。它的返回碼為1234……

  Sample: choice /c:dme defrag,mem,end

  將顯示: defrag,mem,end[D,M,E]?

  Sample:

  choice /c:dme defrag,mem,end

  if errorlevel 3 goto defrag (應先判斷數(shù)值最高的錯誤碼)

  if errorlevel 2 goto mem

  if errotlevel 1 goto end

  10.for 命令

  for 命令是一個比較復雜的命令,主要用于參數(shù)在指定的范圍內(nèi)循環(huán)執(zhí)行命令。

  1) for {%variable | %%variable} in (set) do command [command-parameters]

  %variable 指定一個單一字母可替換的參數(shù)。變量名稱是區(qū)分大小寫的,所以 %i 不同于 %I

  在批處理文件中使用 FOR 命令時,指定變量建議用 %%variable而不要用 %variable。

  (set) 指定一個或一組文件。可以使用通配符。

  command 指定對每個文件執(zhí)行的命令。

  command-parameters 為特定命令指定參數(shù)或命令行開關。

  2) 如果命令擴展名被啟用,下列額外的 FOR 命令格式會受到支持:

  a.FOR /D %variable IN (set) DO command [command-parameters]

  如果集里面包含通配符,則指定與目錄名匹配,而不與文件名匹配。

  b.FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

  檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的FOR 語句。

  如果在 /R 后沒有指定目錄,則使用當前目錄。如果集僅為一個單點(.)字符,則枚舉該目錄樹。

  c.FOR /L %variable IN (start,step,end) DO command [command-parameters]

  該集表示以增量形式從開始到結(jié)束的一個數(shù)字序列。

  如:(1,1,5) 將產(chǎn)生序列 1 2 3 4 5; 而(5,-1,1) 將產(chǎn)生序列 (5 4 3 2 1)。

  d.有或者沒有 usebackq 選項:

  FOR /F ["options"] %variable IN (file-set) DO command

  FOR /F ["options"] %variable IN ("string") DO command

  FOR /F ["options"] %variable IN (command) DO command

  參數(shù)"options"為:

  eol=c - 指一個行注釋字符的結(jié)尾(就一個,如“;”)

  skip=n - 指在文件開始時忽略的行數(shù)。

  delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的默認分隔符集。

  tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代的 for 本身。這會導致額外變量名稱的分配。

  m-n格式為一個范圍。通過 nth 符號指定 mth。

  如果符號字符串中的最后一個字符星號,那么額外的變量將在最后一個符號解析之后分配并接受行的保留文本。

  usebackq - 指定新語法已在下類情況中使用:

  在作為命令執(zhí)行一個后引號的字符串并且一個單引號字符為文字字符串命令并允許在 filenameset中使用雙引號擴起文件名稱。

  3) Sample:

  1. 如下命令行會顯示當前目錄下所有以bat或者txt為擴展名的文件名。

  for %%c in (*.bat *.txt) do (echo %%c)

  a. 如下命令行會顯示當前目錄下所有包含有 e 或者 i 的目錄名。

  for /D %%a in (*e* *i*) do echo %%a

  b. 如下命令行會顯示 E盤test目錄 下所有以bat或者txt為擴展名的文件名。

  for /R E:\test %%b in (*.txt *.bat) do echo %%b

  for /r %%c in (*) do (echo %%c) :: 遍歷當前目錄下所有文件

  c. 如下命令行將產(chǎn)生序列 1 2 3 4 5

  for /L %%c in (1,1,5) do echo %%c

  d. 以下兩句,顯示當前的年月日和時間

  For /f "tokens=1-3 delims=-/. " %%j In ('Date /T') do echo %%j年%%k月%%l日

  For /f "tokens=1,2 delims=: " %%j In ('TIME /T') do echo %%j時%%k分

  e. 把記事本中的內(nèi)容每一行前面去掉8個字符

  setlocal enabledelayedexpansion

  for /f %%i in (zhidian.txt) do (

  set atmp=%%i

  set atmp=!atmp:~8!

  if {!atmp!}=={} ( echo.) else echo !atmp!

  )

  :: 讀取記事本里的內(nèi)容(使用 delims 是為了把一行顯示全,否則會以空格為分隔符)

  for /f "delims=" %%a in (zhidian.txt) do echo.%%a

  4) continue 和 break

  利用 goto 實現(xiàn)程序中常用的 continue 和 break 命令, 其實非常簡單

  continue: 在 for 循環(huán)的最后一行寫上一個標簽,跳轉(zhuǎn)到這位置即可

  break: 在 for 循環(huán)的外面的下一句寫上一個標簽,跳轉(zhuǎn)到這位置即可

  Sample: (偽代碼)

  for /F ["options"] %variable IN (command) DO (

  ... do command ...

  if ... goto continue

  if ... goto break

  ... do command ...

  :continue

  )

  :break

  四、其它命令

  1. ping 命令

  測試網(wǎng)絡聯(lián)接狀況以及信息包發(fā)送和接收狀況。但是不能夠測試端口。

  語法:ping IP地址或主機名 [-t] [-a] [-n count] [-l size]

  參數(shù)含義:

  -t 不停地向目標主機發(fā)送數(shù)據(jù);

  -a 以IP地址格式來顯示目標主機的網(wǎng)絡地址;

  -n count 指定要Ping多少次,具體次數(shù)由count來指定;

  -l size 指定發(fā)送到目標主機的數(shù)據(jù)包的大小。

  Sample: ping 192.168.0.1 -t (不停的測試192.168.0.1,按ctrl+c停止)

  Sample: for /L %%a in (0,1,255) do ping 192.168.0.%%a -n 1 >> tmp.txt (ping一下所有的局域網(wǎng)電腦)

  2. telnet 命令

  測試端口使用 telnet IP地址或主機名 端口,使用tcp協(xié)議的

  Sample: telnet 192.168.0.1 80 (測試192.168.0.1的80端口)

  3.color 命令

  設置背景及字體顏色

  語法: color bf

  b 是指定背景色的十六進制數(shù)字; f 指定前景顏色(即字體顏色)。

  顏色值: 0:黑色 1:藍色 2:綠色 3:湖藍 4:紅色 5:紫色 6:** 7:白色

  8:灰色 9:淡藍 A:淡綠 B:淺綠 C:淡紅 D:淡紫 E:淡黃 F:亮白

  如果沒有給定任何參數(shù),該命令會將顏色還原到 CMD.EXE 啟動時的顏色。

  如果兩參數(shù)一樣,視為無效輸入。只有一個參數(shù)時,設置字體。

  4. random 命令

  產(chǎn)生隨機數(shù)(正整數(shù)0~)

  5. exit 命令

  結(jié)束程序。即時是被調(diào)用的程序,結(jié)束后也不會返回原程序

  6. shutdown命令

  shutdown -s 關機

  10. 所有內(nèi)置命令的幫助信息

  ver /?

  cmd /?

  set /?

  rem /?

  if /?

  echo /?

  goto /?

  for /?

  shift /?

  call /?

  其他需要的常用命令

  type /?

  find /?

  findstr /?

  copy /?

  五、字符串處理

  1) 分割字符串,以查看時間為例

  %源字符串:~起始值,截取長度% (起始值從0開始;截取長度是可選的,如果省略逗號和截取長度,將會從起始值截取到結(jié)尾;

  截取長度如果是負數(shù),表示截取到倒數(shù)第幾個。)

  "%time%" 顯示如:"11:04:23.03" (完整的時間"hh:mm:ss.tt")

  "%time:~0,5%" 顯示"hh:mm"(即"11:04"),其中0表示從右向左移位操作的個數(shù),5表示從左向右移位操作的個數(shù)

  "%time:~0,8%" 顯示標準時間格式"hh:mm:ss"(即"11:04:23",前8個字符串)

  "%time:~3,-3%"顯示"mm:ss"(即從第4個開始,截去最后3個的字符串)

  "%time:~3%" 顯示"04:23.03"(即去掉前4個字符串)

  "%time:~-3%" 顯示".tt"(即最后3個字符串)

  上面的字串分割格式,也可以用于其它地方,如目錄路徑:"%cd:~0,10%"

  2) 替換字符串

  set a="abcd1234"

  echo %a% 顯示:"abcd1234"

  set a=%a:1=kk% 替換“1”為“kk”

  echo %a% 顯示:"abcdkk234"

  3) 字符串合并

  由于沒有直接的字符串合并函數(shù),只能用笨方法了。

  set str1=%str1%%str2% (合并 str1 和 str2)

  4) 計算字符串長度

  沒有現(xiàn)成的函數(shù)。如下程序利用 goto形成循環(huán),不斷將字符串截短1,并記錄截短的次數(shù),到字符串變成空時的次數(shù)即長度。

  set testStr=This is a test string

  :: 將 testStr 復制到str,str 是個臨時字符串

  set str=%testStr%

  :: 標簽,用于goto跳轉(zhuǎn)

  :next1

  :: 判斷str是不是空,如果不是則執(zhí)行下邊的語句

  if not "%str%"=="" (

  :: 算術(shù)運算,使num的值自增1,相當于num++或者++num語句

  set /a num+=1

  :: 截取字符串,每次截短1

  set "str=%str:~1%"

  :: 跳轉(zhuǎn)到next1標簽: 這里利用goto和標簽,構(gòu)成循環(huán)結(jié)構(gòu)

  goto next1

  )

  :: 當以上循環(huán)結(jié)構(gòu)執(zhí)行完畢時,會執(zhí)行下邊的語句

  echo testStr=%testStr%

  echo testStr的長度為:%num%

  5) 截取字符串時,需要傳遞參數(shù)

  直接 echo %args:~%num%,-5% 沒辦法想要的字符串,需要如下兩步

  setlocal enabledelayedexpansion

  echo !args:~%num%,-5!

  六、注冊表操作

  1) 備份注冊表,將[HKEY_LOCAL_MACHINE ... Run]的內(nèi)容,備份到“c:\windows class="main">

批處理文件

時間: 春健736 分享

  reg export HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run c:\windows class="main">

批處理文件

時間: 春健736 分享

  reg export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run c:\windows

  批處理,顧名思義就是進行批量的處理。批處理文件是擴展名為·bat 或·cmd的文本文件,包含一條或多條命令,由DOS或Windows系統(tǒng)內(nèi)嵌的命令解釋器來解釋運行。。學習啦小編給大家分享一下批處理文件怎么設置的方法。希望大家喜歡!

  批處理文件參考如下:

  批處理文件是一種簡單的可執(zhí)行文件,常常用來執(zhí)行清理或簡單的安裝命令,下面我們來看一個練習;

  1、批處理文件

  1)批處理文件的圖標是一個齒輪窗口圖標

  ,雙擊運行后會出來一個黑色命令行窗口;

  2)在批處理文件圖標上點右鍵,里面有一個“編輯”命令,可以查看文件的內(nèi)容;

  2、批處理命令

  1)echo 是顯示命令,它后面的文字會原樣顯示在命令行窗口里,前面加上“@”則會隱藏,

  比如: echo 正在完成,請稍等...

  2)del 是刪除命令,可以刪除指定的文件,星號“*”代表所有文件,

  比如: echo del *.tmp

  3)rd 是刪除文件夾命令,可以刪除指定文件夾;(更多電腦知識,計算機基礎知識入門,請到http://www.pc6c.com電腦知識網(wǎng))

  4)pause 暫停命令,這時候按按一下回車鍵或空格鍵就可以繼續(xù);

  5)可以用記事本來創(chuàng)建批處理文件,每行輸入一句命令,保存的時候以.bat為文件名,類型選所有文件;

  ;

  一、基礎語法:

  1.批處理文件是一個“.bat”結(jié)尾的文本文件,這個文件的每一行都是一條DOS命令。可以使用任何文本文件編輯工具創(chuàng)建和修改。

  2.批處理是一種簡單的程序,可以用 if 和 goto 來控制流程,也可以使用 for 循環(huán)。

  3.批處理的編程能力遠不如C語言等編程語言,也十分不規(guī)范。

  4.每個編寫好的批處理文件都相當于一個DOS的外部命令,把它所在的目錄放到DOS搜索路徑(path)中,即可在任意位置運行。

  5.C:\AUTOEXEC.BAT 是每次系統(tǒng)啟動時都會自動運行的,可以將每次啟動時都要運行的命令放入該文件中。

  6.大小寫不敏感(命令符忽略大小寫)

  7.批處理的文件擴展名為 .bat 或 .cmd。

  8.在命令提示下鍵入批處理文件的名稱,或者雙擊該批處理文件,系統(tǒng)就會調(diào)用Cmd.exe來運行該文件。

  二、參數(shù):

  1) 系統(tǒng)參數(shù)

  %SystemRoot% === C:\WINDOWS (%windir% 同樣)

  %ProgramFiles% === C:\Program Files

  %USERPROFILE% === C:\Documents and Settings\Administrator (子目錄有“桌面”,“開始菜單”,“收藏夾”等)

  %APPDATA% === C:\Documents and Settings\Administrator\Application Data

  %TEMP% === C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp (%TEM% 同樣)

  %APPDATA% === C:\Documents and Settings\Administrator\Application Data

  %OS% === Windows_NT (系統(tǒng))

  %Path% === %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem (原本的設置)

  %HOMEDRIVE% === C: (系統(tǒng)盤)

  %HOMEPATH% === \Documents and Settings\Administrator

  :: 枚舉當前的環(huán)境變量

  setlocal enabledelayedexpansion

  FOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i !%%i!

  2) 傳遞參數(shù)給批處理文件

  %[1-9]表示參數(shù),參數(shù)是指在運行批處理文件時在文件名后加的以空格(或者Tab)分隔的字符串。

  變量可以從%0到%9,%0表示批處理命令本身,其它參數(shù)字符串用 %1 到 %9 順序表示。

  Sample:

  call test2.bat "hello" "haha" (執(zhí)行同目錄下的“test2.bat”文件,并輸入兩個參數(shù))

  在“test2.bat”文件里寫:

  echo %1 (打印: "hello")

  echo %2 (打印: "haha")

  echo %0 (打印: test2.bat)

  echo %19 (打印: "hello"9)

  三、批處理基本命令

  0. help 命令

  /? 命令

  語法: 命令 /?

  可顯示此命令的幫助信息

  Sample: type /? >>tmp.txt (把 type 命令的幫助信息寫入到tmp.txt文件里)

  Sample: help type (顯示跟“type /?”一樣)

  1.Echo 命令

  語法: echo [{on|off}] [message]

  ECHO [ON | OFF] 打開回顯或關閉回顯功能。

  ECHO 顯示當前回顯設置。

  ECHO [message] 顯示信息。

  echo off 表示在此語句后所有運行的命令都不顯示命令行本身;默認是on,on時會顯示如: C:\文件夾路徑>命令行。

  在實際應用中我們會把這條命令和重定向符號( 也稱為管道符號,一般用 > >> ^ )結(jié)合來實現(xiàn)輸入一些命令到特定格式的文件中。

  Sample: echo off

  Sample: echo hello world (顯示出“hello world”)

  Sample: echo Windows Registry Editor Version 5.00 > c:\setupreg.reg (此前還沒有 setupreg.reg 這個文件)

  Sample: echo "SourcePath"="D:\\Win2003\\" >> c:\setupreg.reg (追加內(nèi)容進 setupreg.reg 這個文件)

  2.@ 命令

  表示不顯示@后面的命令,(在入侵過程中自然不能讓對方看到你使用的命令啦)

  @ 與 echo off 相象,但它是加在每個命令行的最前面,表示運行時不顯示這一行的命令行(只能影響當前行)。

  Sample: @echo off (此語句常用于開頭,表示不顯示所有的命令行信息,包括此句)

  Sample: @echo please wait a minite...

  Sample: @format X: /q/u/autoset

  (format 這個命令是不可以使用/y這個參數(shù)的,可喜的是微軟留了個autoset這個參數(shù)給我們,效果和/y是一樣的。)

  3.Goto 命令

  語法:goto label (label是參數(shù),指定所要轉(zhuǎn)向的批處理程序中的行。)

  指定跳轉(zhuǎn)到標簽行,找到標簽行后,程序?qū)⑻幚韽南乱恍虚_始的命令。

  label標簽的名字可以隨便起,但是最好是有意義的,字母前必須加個冒號“:”來表示這個字母是標簽。

  goto命令就是根據(jù)這個冒號來尋找下一步跳到到那里。經(jīng)常與 if 配合使用,根據(jù)不同的條件來執(zhí)行不同的命令組。

  例題見“5.Pause 命令”

  4.Rem 命令

  語法:Rem Message...

  (小技巧:用::代替rem)

  注釋命令,在C語言中相當與/*...*/,它并不會被執(zhí)行,只是起一個注釋的作用,便于別人閱讀和自己日后修改。

  Sample:@Rem Here is the description.

  5.Pause 命令

  會暫停批處理的執(zhí)行并在屏幕上顯示Press any key to continue...的提示,等待用戶按任意鍵后繼續(xù)

  Sample:

  @echo off

  :begin

  copy a:*.* d:\back

  echo Please put a new disk into driver A

  pause

  goto begin

  在這個例子中,驅(qū)動器 A 中磁盤上的所有文件均復制到d:\back中。

  顯示的信息提示您將另一張磁盤放入驅(qū)動器 A 時,pause 命令會使程序掛起,以便您更換磁盤,然后按任意鍵再次復制。

  6.Call 命令

  語法: call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]

  參數(shù): [Drive:][Path] FileName 指定要調(diào)用的批處理程序的位置和名稱。filename 參數(shù)必須具有 .bat 或 .cmd 擴展名。

  調(diào)用另一個批處理程序,并且不終止父批處理程序。

  如果不用call而直接調(diào)用別的批處理文件,那么執(zhí)行完那個批處理文件后將無法返回當前文件并執(zhí)行當前文件的后續(xù)命令。

  call 命令接受用作調(diào)用目標的標簽。如果在腳本或批處理文件外使用 Call,它將不會在命令行起作用。

  Sample:call="%cd%\test2.bat" haha kkk aaa (調(diào)用指定目錄下的 test2.bat,且輸入3個參數(shù)給他)

  Sample:call test2.bat arg1 arg2 (調(diào)用同目錄下的 test2.bat,且輸入2個參數(shù)給他)

  注:可以調(diào)用自身(死循環(huán)、遞歸)

  7.start 命令

  調(diào)用外部程序,所有的 DOS命令 和 命令行程序 都可以由 start命令 來調(diào)用。

  入侵常用參數(shù):

  MIN 開始時窗口最小化

  SEPARATE 在分開的空間內(nèi)開始 16 位 Windows 程序

  HIGH 在 HIGH 優(yōu)先級類別開始應用程序

  REALTIME 在 REALTIME 優(yōu)先級類別開始應用程序

  WAIT 啟動應用程序并等候它結(jié)束

  parameters 這些為傳送到命令/程序的參數(shù)

  Sample:start /MIN test2.bat arg1 arg2 (調(diào)用同目錄下的 test2.bat,且輸入2個參數(shù)給他,且本窗口最小化)

  Sample:e:\"program files"\極品列車時刻表\jpskb.exe (文件路徑名有空格時)

  8.If 命令

  if 表示將判斷是否符合規(guī)定的條件,從而決定執(zhí)行不同的命令。有三種格式:

  1) IF

  語法: if [not] "參數(shù)" == "字符串" 待執(zhí)行的命令

  參數(shù)如果等于(not表示不等,下同)指定的字符串,則條件成立,運行命令,否則運行下一句。(注意是兩個等號)

  Sample: if "%1" == "a" format a:

  Sample: if {%1} == {} goto noparms

  2) if exist

  語法: if [not] exist [路徑\]文件名 待執(zhí)行的命令

  如果有指定的文件,則條件成立,運行命令,否則運行下一句。

  Sample: if exist config.sys edit config.sys (表示如果存在這文件,則編輯它,用很難看的系統(tǒng)編輯器)

  Sample: if exist config.sys type config.sys (表示如果存在這文件,則顯示它的內(nèi)容)

  3) if errorlevel number

  語法: if [not] errorlevel <數(shù)字> 待執(zhí)行的命令

  如果程序返回值等于指定的數(shù)字,則條件成立,運行命令,否則運行下一句。(返回值必須按照從大到小的順序排列)

  Sample:

  @echo off

  XCOPY F:\test.bat D:\

  IF ERRORLEVEL 1 (ECHO 文件拷貝失敗

  ) Else IF ERRORLEVEL 0 ECHO 成功拷貝文件

  pause

  很多DOS程序在運行結(jié)束后會返回一個數(shù)字值用來表示程序運行的結(jié)果(或者狀態(tài)),稱為錯誤碼errorlevel或稱返回碼。

  常見的返回碼為0、1。通過if errorlevel命令可以判斷程序的返回值,根據(jù)不同的返回值來決定執(zhí)行不同的命令。

  4) else

  語法: if 條件 (成立時執(zhí)行的命令) else (不成立時執(zhí)行的命令)

  如果是多個條件,建議適當使用括號把各條件包起來,以免出錯。

  Sample: if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3 )

  注:如果 else 的語句需要換行,if 執(zhí)行的行尾需用“^”連接,并且 if 執(zhí)行的動作需用(括起來),否則報錯

  Sample: if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) ^

  else (echo comment3 )

  5) 比較運算符:

  EQU - 等于 (一般使用“==”)

  NEQ - 不等于 (沒有 “!=”,改用“ if not 1==1 ”的寫法)

  LSS - 小于

  LEQ - 小于或等于

  GTR - 大于

  GEQ - 大于或等于

  9.choice 命令

  choice 使用此命令可以讓用戶輸入一個字符(用于選擇),從而根據(jù)用戶的選擇返回不同的 errorlevel,

  然后配合 if errorlevel 選擇運行不同的命令。

  注意:choice命令為DOS或者Windows系統(tǒng)提供的外部命令,不同版本的choice命令語法會稍有不同,請用choice /?查看用法。

  choice 使用此命令可以讓用戶輸入一個字符,從而運行不同的命令。

  使用時應該加/c:參數(shù),c:后應寫提示可輸入的字符,之間無空格。它的返回碼為1234……

  Sample: choice /c:dme defrag,mem,end

  將顯示: defrag,mem,end[D,M,E]?

  Sample:

  choice /c:dme defrag,mem,end

  if errorlevel 3 goto defrag (應先判斷數(shù)值最高的錯誤碼)

  if errorlevel 2 goto mem

  if errotlevel 1 goto end

  10.for 命令

  for 命令是一個比較復雜的命令,主要用于參數(shù)在指定的范圍內(nèi)循環(huán)執(zhí)行命令。

  1) for {%variable | %%variable} in (set) do command [command-parameters]

  %variable 指定一個單一字母可替換的參數(shù)。變量名稱是區(qū)分大小寫的,所以 %i 不同于 %I

  在批處理文件中使用 FOR 命令時,指定變量建議用 %%variable而不要用 %variable。

  (set) 指定一個或一組文件??梢允褂猛ㄅ浞?。

  command 指定對每個文件執(zhí)行的命令。

  command-parameters 為特定命令指定參數(shù)或命令行開關。

  2) 如果命令擴展名被啟用,下列額外的 FOR 命令格式會受到支持:

  a.FOR /D %variable IN (set) DO command [command-parameters]

  如果集里面包含通配符,則指定與目錄名匹配,而不與文件名匹配。

  b.FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

  檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的FOR 語句。

  如果在 /R 后沒有指定目錄,則使用當前目錄。如果集僅為一個單點(.)字符,則枚舉該目錄樹。

  c.FOR /L %variable IN (start,step,end) DO command [command-parameters]

  該集表示以增量形式從開始到結(jié)束的一個數(shù)字序列。

  如:(1,1,5) 將產(chǎn)生序列 1 2 3 4 5; 而(5,-1,1) 將產(chǎn)生序列 (5 4 3 2 1)。

  d.有或者沒有 usebackq 選項:

  FOR /F ["options"] %variable IN (file-set) DO command

  FOR /F ["options"] %variable IN ("string") DO command

  FOR /F ["options"] %variable IN (command) DO command

  參數(shù)"options"為:

  eol=c - 指一個行注釋字符的結(jié)尾(就一個,如“;”)

  skip=n - 指在文件開始時忽略的行數(shù)。

  delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的默認分隔符集。

  tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代的 for 本身。這會導致額外變量名稱的分配。

  m-n格式為一個范圍。通過 nth 符號指定 mth。

  如果符號字符串中的最后一個字符星號,那么額外的變量將在最后一個符號解析之后分配并接受行的保留文本。

  usebackq - 指定新語法已在下類情況中使用:

  在作為命令執(zhí)行一個后引號的字符串并且一個單引號字符為文字字符串命令并允許在 filenameset中使用雙引號擴起文件名稱。

  3) Sample:

  1. 如下命令行會顯示當前目錄下所有以bat或者txt為擴展名的文件名。

  for %%c in (*.bat *.txt) do (echo %%c)

  a. 如下命令行會顯示當前目錄下所有包含有 e 或者 i 的目錄名。

  for /D %%a in (*e* *i*) do echo %%a

  b. 如下命令行會顯示 E盤test目錄 下所有以bat或者txt為擴展名的文件名。

  for /R E:\test %%b in (*.txt *.bat) do echo %%b

  for /r %%c in (*) do (echo %%c) :: 遍歷當前目錄下所有文件

  c. 如下命令行將產(chǎn)生序列 1 2 3 4 5

  for /L %%c in (1,1,5) do echo %%c

  d. 以下兩句,顯示當前的年月日和時間

  For /f "tokens=1-3 delims=-/. " %%j In ('Date /T') do echo %%j年%%k月%%l日

  For /f "tokens=1,2 delims=: " %%j In ('TIME /T') do echo %%j時%%k分

  e. 把記事本中的內(nèi)容每一行前面去掉8個字符

  setlocal enabledelayedexpansion

  for /f %%i in (zhidian.txt) do (

  set atmp=%%i

  set atmp=!atmp:~8!

  if {!atmp!}=={} ( echo.) else echo !atmp!

  )

  :: 讀取記事本里的內(nèi)容(使用 delims 是為了把一行顯示全,否則會以空格為分隔符)

  for /f "delims=" %%a in (zhidian.txt) do echo.%%a

  4) continue 和 break

  利用 goto 實現(xiàn)程序中常用的 continue 和 break 命令, 其實非常簡單

  continue: 在 for 循環(huán)的最后一行寫上一個標簽,跳轉(zhuǎn)到這位置即可

  break: 在 for 循環(huán)的外面的下一句寫上一個標簽,跳轉(zhuǎn)到這位置即可

  Sample: (偽代碼)

  for /F ["options"] %variable IN (command) DO (

  ... do command ...

  if ... goto continue

  if ... goto break

  ... do command ...

  :continue

  )

  :break

  四、其它命令

  1. ping 命令

  測試網(wǎng)絡聯(lián)接狀況以及信息包發(fā)送和接收狀況。但是不能夠測試端口。

  語法:ping IP地址或主機名 [-t] [-a] [-n count] [-l size]

  參數(shù)含義:

  -t 不停地向目標主機發(fā)送數(shù)據(jù);

  -a 以IP地址格式來顯示目標主機的網(wǎng)絡地址;

  -n count 指定要Ping多少次,具體次數(shù)由count來指定;

  -l size 指定發(fā)送到目標主機的數(shù)據(jù)包的大小。

  Sample: ping 192.168.0.1 -t (不停的測試192.168.0.1,按ctrl+c停止)

  Sample: for /L %%a in (0,1,255) do ping 192.168.0.%%a -n 1 >> tmp.txt (ping一下所有的局域網(wǎng)電腦)

  2. telnet 命令

  測試端口使用 telnet IP地址或主機名 端口,使用tcp協(xié)議的

  Sample: telnet 192.168.0.1 80 (測試192.168.0.1的80端口)

  3.color 命令

  設置背景及字體顏色

  語法: color bf

  b 是指定背景色的十六進制數(shù)字; f 指定前景顏色(即字體顏色)。

  顏色值: 0:黑色 1:藍色 2:綠色 3:湖藍 4:紅色 5:紫色 6:** 7:白色

  8:灰色 9:淡藍 A:淡綠 B:淺綠 C:淡紅 D:淡紫 E:淡黃 F:亮白

  如果沒有給定任何參數(shù),該命令會將顏色還原到 CMD.EXE 啟動時的顏色。

  如果兩參數(shù)一樣,視為無效輸入。只有一個參數(shù)時,設置字體。

  4. random 命令

  產(chǎn)生隨機數(shù)(正整數(shù)0~)

  5. exit 命令

  結(jié)束程序。即時是被調(diào)用的程序,結(jié)束后也不會返回原程序

  6. shutdown命令

  shutdown -s 關機

  10. 所有內(nèi)置命令的幫助信息

  ver /?

  cmd /?

  set /?

  rem /?

  if /?

  echo /?

  goto /?

  for /?

  shift /?

  call /?

  其他需要的常用命令

  type /?

  find /?

  findstr /?

  copy /?

  五、字符串處理

  1) 分割字符串,以查看時間為例

  %源字符串:~起始值,截取長度% (起始值從0開始;截取長度是可選的,如果省略逗號和截取長度,將會從起始值截取到結(jié)尾;

  截取長度如果是負數(shù),表示截取到倒數(shù)第幾個。)

  "%time%" 顯示如:"11:04:23.03" (完整的時間"hh:mm:ss.tt")

  "%time:~0,5%" 顯示"hh:mm"(即"11:04"),其中0表示從右向左移位操作的個數(shù),5表示從左向右移位操作的個數(shù)

  "%time:~0,8%" 顯示標準時間格式"hh:mm:ss"(即"11:04:23",前8個字符串)

  "%time:~3,-3%"顯示"mm:ss"(即從第4個開始,截去最后3個的字符串)

  "%time:~3%" 顯示"04:23.03"(即去掉前4個字符串)

  "%time:~-3%" 顯示".tt"(即最后3個字符串)

  上面的字串分割格式,也可以用于其它地方,如目錄路徑:"%cd:~0,10%"

  2) 替換字符串

  set a="abcd1234"

  echo %a% 顯示:"abcd1234"

  set a=%a:1=kk% 替換“1”為“kk”

  echo %a% 顯示:"abcdkk234"

  3) 字符串合并

  由于沒有直接的字符串合并函數(shù),只能用笨方法了。

  set str1=%str1%%str2% (合并 str1 和 str2)

  4) 計算字符串長度

  沒有現(xiàn)成的函數(shù)。如下程序利用 goto形成循環(huán),不斷將字符串截短1,并記錄截短的次數(shù),到字符串變成空時的次數(shù)即長度。

  set testStr=This is a test string

  :: 將 testStr 復制到str,str 是個臨時字符串

  set str=%testStr%

  :: 標簽,用于goto跳轉(zhuǎn)

  :next1

  :: 判斷str是不是空,如果不是則執(zhí)行下邊的語句

  if not "%str%"=="" (

  :: 算術(shù)運算,使num的值自增1,相當于num++或者++num語句

  set /a num+=1

  :: 截取字符串,每次截短1

  set "str=%str:~1%"

  :: 跳轉(zhuǎn)到next1標簽: 這里利用goto和標簽,構(gòu)成循環(huán)結(jié)構(gòu)

  goto next1

  )

  :: 當以上循環(huán)結(jié)構(gòu)執(zhí)行完畢時,會執(zhí)行下邊的語句

  echo testStr=%testStr%

  echo testStr的長度為:%num%

  5) 截取字符串時,需要傳遞參數(shù)

  直接 echo %args:~%num%,-5% 沒辦法想要的字符串,需要如下兩步

  setlocal enabledelayedexpansion

  echo !args:~%num%,-5!

  六、注冊表操作

  1) 備份注冊表,將[HKEY_LOCAL_MACHINE ... Run]的內(nèi)容,備份到“c:\windows\1.reg”

  reg export HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run c:\windows\1.reg

  reg export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run c:\windows\2.reg

  2) 修改/添加注冊表內(nèi)容

  a.一般的添加或修改

  reg add "HKCU\Environment" /v Java_Home /t reg_sz /d "D:\Java\jdk1.6.0_07" /f

  上句解析:“HKCU”是“HKEY_CURRENT_USER”的縮寫,不用縮寫用全稱也可以;

  添加名稱為“Java_Home”的變量;類型為“reg_sz”,另一種常見類型是“reg_dword”;值為 D:\Java\jdk1.6.0_07;

  b.使用變量

  set SoftWareHome=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java

  reg add "%SoftWareHome%Web Start\1.6.0_07" /v Home /t reg_sz /d "%cd%\jre1.6.0_07\bin" /f

  c.如果注冊表的名稱有空格,或者數(shù)據(jù)用特殊符號時

  reg add "%SoftWareHome2%\HelpCommands" /v "01:Online Documentation" /t reg_sz /d "\"%cd%\Documentation\Index.htm\"" /f

  傳入值為(值用雙引號括起來的):"D:\ProgramFiles\1.work_soft\Sybase\PowerDesigner_12\Documentation\Index.htm"

  reg add "%SoftWareHome2%\Paths" /v ReportTemplates /t reg_sz /d "%cd%\Resource Files\Report Templates\\" /f

  傳入值為(“\”結(jié)尾的): E:\Holemar\1.notes\90. Windows\Resource Files\Report Templates\

  d.增加空的內(nèi)容

  reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1"

  e.添加或修改默認值

  reg add "%vpath%InstallPath" /ve /t reg_sz /d "%cd%" /f

  這里用“/ve”來代替一般修改時的“/v 變量名”,即可修改默認值了

  3) 刪除注冊表的內(nèi)容

  雙引號里面的是注冊表的目錄,下面兩句將刪除這目錄下的所有信息

  reg delete "HKEY_CURRENT_USER\Software\RealVNC" /f

  reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC" /f

  雙引號里面的是注冊表的目錄,下面一句將刪除這目錄下指定的某個信息

  reg delete "HKEY_LOCAL_MACHINE\Software\RealVNC" /v VNC_Server /f

  4) 注冊表的常用位置

  a.系統(tǒng)啟動項:

  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

  [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]

  example: REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run /v VNC_Server /t REG_SZ /d "%cd%\VNC_Server.bat" /f

  b.系統(tǒng)環(huán)境變量:

  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]

  c.當前用戶的環(huán)境變量:

  [HKEY_CURRENT_USER\Environment]

  5) 修改注冊表之后,結(jié)束并重新加載explorer.exe進程,可刷新注冊表,令其生效

  taskkill /f /im explorer.exe >nul

  start "" "explorer.exe"

  七、系統(tǒng)服務

  1) 停止服務:NET STOP 服務名

  啟動服務:NET Start 服務名

  2) 設置啟動類型

  自動: SC CONFIG 服務名 START= auto

  手動: SC CONFIG 服務名 START= demand

  已禁用:SC CONFIG 服務名 START= disabled

  附:“START= ”等號后面必須要有一個空格。(start還有boot,system兩個值)

  Sample: SC CONFIG Spooler START= demand (打印機加載項,設置成手動,默認自動)

  3) 查看系統(tǒng)服務:start %SystemRoot%\system32\services.msc /s

  八、setlocal與變量延遲

  0) 在沒有開啟變量延遲的情況下,某條命令行中的變量改變,必須到下一條命令才能體現(xiàn)。

  另外例如for命令等,其后用一對圓括號閉合的所有語句也當作一行。

  example:

  set a=4

  set a=5 & echo %a%

  結(jié)果:4

  也可以對這種機制加以利用,如下的變量交換

  example:

  set var1=abc

  set var2=123

  echo 交換前: var1=%var1% var2=%var2%

  set var1=%var2%& set var2=%var1%

  echo 交換后: var1=%var1% var2=%var2%

  1) 啟動批處理文件中環(huán)境變量的本地化。本地化將持續(xù)到出現(xiàn)匹配的 endlocal 命令或者到達批處理文件結(jié)尾為止。

  語法: setlocal {enableextension | disableextensions} {enabledelayedexpansion | disabledelayedexpansion}

  enableextension: 啟用命令擴展,直到出現(xiàn)匹配的 endlocal 命令,無論 setlocal 命令之前的設置如何。

  disableextensions: 禁用命令擴展,直到出現(xiàn)匹配的 endlocal 命令,無論 setlocal 命令之前的設置如何。

  enabledelayedexpansion: 啟用延遲的環(huán)境變量擴展,直到出現(xiàn)匹配的 endlocal 命令,無論 setlocal 命令之前的設置如何。

  disabledelayedexpansion: 禁用延遲的環(huán)境變量擴展,直到出現(xiàn)匹配的 endlocal 命令,無論 setlocal 命令之前的設置如何。

  2) 為了能夠感知環(huán)境變量的動態(tài)變化,批處理設計了變量延遲。簡單來說,在讀取了一條完整的語句之后,不立即對該行的變量賦值,而會在某個單條語句執(zhí)行之前再進行賦值,也就是說“延遲”了對變量的賦值。

  examle:

  setlocal enabledelayedexpansion

  set a=4

  set a=5 & echo !a!

  結(jié)果: 5

  變量延遲的啟動語句是“setlocal enabledelayedexpansion”,并且變量要用一對嘆號“!!”括起來

  由于啟動了變量延遲,所以批處理能夠感知到動態(tài)變化,即不是先給該行變量賦值,而是在運行過程中給變量賦值,因此此時a的值就是5了

  另外,啟動變量延遲,“%”的變量還是不變

  example2:

  setlocal enabledelayedexpansion

  for /l %%i in (1,1,5) do (

  set a=%%i

  echo !a!

  )

  結(jié)果,打印從1到5;如果不變量延遲,一個變量也沒有打印

  九、文件處理

  1.刪除

  1) 刪除一個文件或多個文件

  del /s /q /f d:\test\a.bat

  將直接刪除d:\test\a.bat,沒有任務提示

  del temp\* /q /f /s

  將直接刪除 本目錄的 temp 目錄的所有文件,沒有任務提示

  刪除文件的時候可以使用“*”作通配符

  2) 刪除一個空目錄

  rd /q /s d:\test\log

  將直接刪除d:\test\log目錄,如果log目錄里面有文件將無法刪除

  3) 刪除一個非空目錄 (必須指定目錄名稱)

  rmdir /q /s d:\test\logs

  必須指定目錄名稱,不能使用通配符

  /S 除目錄本身外,還將刪除指定目錄下的所有子目錄

  /Q 安靜模式,帶 /S 刪除目錄樹時不要求確認

  無論里面是否有文件或文件夾將全部直接刪除

  2.創(chuàng)建目錄

  MKDIR [drive:]path

  MD [drive:]path

  路徑有空格時,可以用雙引號括起來,也可以用 替代

  實踐部分:

  ======================================================================

  一、小摘錄:

  1. 調(diào)用其他程序時,對文件的大小寫不敏感,文件后綴也可忽略

  如:start LeapFTP.exe 與 start leapftp 效果一樣,都是運行“LeapFTP.exe”文件

  每行的開頭的字符串會自動查找程序來運行,還可用雙引號引起來(文件名或目錄名含空格時必須用)

  如:"D:\Program Files\Leap FTP.exe"

  "LeapFTP.exe" 可正常運行文件,start "" "LeapFTP.exe" 也可以正常運行文件(注意,第一個參數(shù)是窗口顯示的標題)

  3. copy C:\test\*.* D:\back (復制C盤test文件夾的所有文件(不包括文件夾及子文件夾里的東西)到D盤的back文件夾)

  4. dir c:\*.* > a.txt (將c盤文件列表寫入 a.txt 中)

  5. > 生成文件并寫入內(nèi)容(如果有這文件則覆蓋), >> 文件里追加內(nèi)容

  6. md d:\aa (創(chuàng)建文件夾)

  7. 在命令末尾加上“>NUL 2>NUL”,表示隱蔽返回信息。

  8. 等待用戶輸入: set /p 變量名=屏幕顯示信息。 Sample:set /p pass=請輸入密碼:

  9. 讓用戶按回車退出

  小技巧(替代pause),文件的最后一句:set /p tmp=操作結(jié)束,請按回車鍵退出...

  10.設置標題: title JDK安裝

  11.設置屏幕顯示顏色,如綠色: color 0a

  12.清屏: cls

  13.查看自己的IP:

  for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i

  echo %ip% (這時的 %ip% 就是自己的IP地址)

  14. 修改文件的更新日期

  copy 文件名+,,>nul (修改為當前時間,如果要修改為指定時間,先修改系統(tǒng)時間,再改回系統(tǒng)時間)

  15. 修改文件的后綴名

  ren C:\test\*.jpg *.JPG

  for /r %%c in (*.jpg) do (ren %%c *.JPG) :: 修改當前目錄下的所有文件的后綴名,包括子目錄的

  16. 修改文件的文件名

  rename test.jpg test2.JPG

  rename *.jpg *.888.JPG

  17. 查看DNS、IP、Mac等

  1) Win98: winipcfg

  2) Win2000以上: Ipconfig /all

  3) NSLOOKUP

  18.查看IP上的共享資源,就可以

  net view 192.168.10.8

  19.共享

  A.查看你機器的共享資源: net share

  B.手工刪除共享

  net share 共享資源名稱$ /d

  注意$后有空格。

  C.增加一個共享:

  net share mymovie=e:\downloads\movie /users:3

  mymovie 共享成功。 同時限制鏈接用戶數(shù)為3人。

  20.打開某網(wǎng)站

  start iexplore.exe http://www.baidu.com

  二、實例:

  1. 生成 reg 文件,運行它,再刪除它

  echo "更改windows安裝文件的路徑"

  echo Windows Registry Editor Version 5.00 > c:\setupreg.reg

  echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup] >> c:\setupreg.reg

  echo "ServicePackSourcePath"="D:\\Win2003\\" >> c:\setupreg.reg

  echo "SourcePath"="D:\\Win2003\\" >> c:\setupreg.reg

  :: 寫入注冊表

  regedit /S c:\setupreg.reg

  :: 刪除注冊表文件

  del c:\setupreg.reg

  2.調(diào)用了exe文件,結(jié)束后沒有關閉,解決方式

  用start命令運行文件,如:

  start LeapFTP.exe 192.168.0.100

  3.設置系統(tǒng)環(huán)境變量

  :: 有這個環(huán)境變量,則不需再設置,直接結(jié)束

  if not "%JAVA_HOME%" == "" exit

  :: 設置環(huán)境變量的地址

  set inputJavaHome=%cd%\jdk1.6.0_07

  :: 設置環(huán)境變量,也可以設置當前用戶的變量

  set EnvironmentHome=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

  echo 正在設置環(huán)境變量,請稍候......

  reg add "%EnvironmentHome%" /v JAVA_HOME /t reg_sz /d "%inputJavaHome%" /f

  reg add "%EnvironmentHome%" /v ClassPath /t reg_sz /d ".;%%JAVA_HOME%%\lib" /f

  reg add "%EnvironmentHome%" /v Path /t reg_sz /d "%%JAVA_HOME%%\bin;%Path%" /f]

  :: 刷新,令環(huán)境變量生效

  taskkill /f /im explorer.exe >nul

  start "" "explorer.exe"

  4.隱藏某目錄的所有文件及文件夾

  cd /d 要隱藏的目錄(如:D:)

  for /f "usebackq delims=" %%A in (`dir /a /b`) do (attrib "%%A" -r +h -s)

  5.在批處理中使用密碼。密碼為admin,輸入正確,跳轉(zhuǎn)到next1 ,若輸入密碼錯誤3次,則鎖屏。。

  @echo off

  set num=0

  :11

  set /p pass=請輸入密碼:

  if "%pass%"=="admin" goto next1

  set /a num=%num% + 1

  if %num%==3 goto no1

  goto 11

  :no1

  %windir%\system32\rundll32.exe user32.dll,LockWorkStation

  goto 11

  :next1

  echo 密碼正確,執(zhí)行下面的程式

  pause

  6.清空回收站(未成功)

  @echo off

  del /f /s /q c:\recycler\*.*

  ::刷新屏幕

  taskkill /f /im explorer.exe >nul

  start "" "explorer.exe"

  7.讓系統(tǒng)斷斷續(xù)續(xù)地鳴叫

  @echo off

  :begin

  :: 發(fā)出鳴叫(“”實際就是ASCII碼值為7的特殊字符(蜂鳴鍵beep)

  echo 

  :: 讓程序暫停一小陣子

  ping -n 1 -l 1 127.1>nul

  goto :begin

  8.將 FAT 卷轉(zhuǎn)換成 NTFS

  利用“CONVERT.exe”進行,解析如下:

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

  volume 指定驅(qū)動器號(后面跟一個冒號)、裝載點或卷名。

  /FS:NTFS 指定要被轉(zhuǎn)換成 NTFS 的卷。

  /V 指定 Convert 應該用詳述模式運行。

  /CvtArea:filename

  將根目錄中的一個接續(xù)文件指定為NTFS 系統(tǒng)文件的占位符。

  /NoSecurity 指定每個人都可以訪問轉(zhuǎn)換的文件和目錄的安全設置。

  /X 如果必要,先強行卸載卷。該卷的所有打開的句柄則無效。

  程序如下:

  @ ECHO OFF

  @ ECHO.

  @ ECHO. 說 明

  @ ECHO --------------------------------------------------------------------------

  @ ECHO NTFS是一種磁盤格式。該格式能存放大于4G的單個文件(如高清電影文件),并可對

  @ ECHO 文件夾進行加密,但有個缺點是DOS下無法訪問。建議D盤及其后的盤使用NTFS格式,

  @ ECHO C盤如非必要可以不轉(zhuǎn)換,F(xiàn)AT32與NTFS這兩種格式的讀寫速度幾乎是沒有差別的。

  @ ECHO --------------------------------------------------------------------------

  @ ECHO.

  convert c: /fs:ntfs

  :: D盤也轉(zhuǎn)成 NTFS

  convert d: /fs:ntfs

  9. 獲取我的文檔

  SET SF="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"

  FOR /F "tokens=2,*" %%I IN ('REG QUERY %SF% /v Personal 2^>NUL^|FIND /I "Personal"') DO SET "myDoc=%%~J"

  :: 復制文件到我的文檔

  XCOPY /D /E /R /Y /C "%cd%\test.txt" "%myDoc%\test\"

  10 獲取當前目錄路徑

  cd ./

  set CURR_PATH=%cd%

  ==========================================

  實例:

  3.IF-ERRORLEVEL

  @ECHO OFF

  XCOPY C:\AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 文件拷貝失敗

  IF ERRORLEVEL 0 ECHO 成功拷貝文件

  如果文件拷貝成功,屏幕就會顯示“成功拷貝文件”,否則就會顯示“文件拷貝失敗”。

  IF ERRORLEVEL 是用來測試它的上一個DOS命令的返回值的,注意只是上一個命令的返回值,而且返回值必須依照從大到小次序順序判斷。因此下面的批處理文件是錯誤的:

  @ECHO OFF

  XCOPY C:\AUTOEXEC.BAT D:\

  CHO 成功拷貝文件

  IF ERRORLEVEL 1 ECHO 未找到拷貝文件

  IF ERRORLEVEL 2 ECHO 用戶通過ctrl-c中止拷貝操作

  IF ERRORLEVEL 3 ECHO 預置錯誤阻止文件拷貝操作

  IF ERRORLEVEL 4 ECHO 拷貝過程中寫盤錯誤

  無論拷貝是否成功,后面的:

  未找到拷貝文件

  用戶通過ctrl-c中止拷貝操作

  預置錯誤阻止文件拷貝操作

  拷貝過程中寫盤錯誤

  都將顯示出來。

  以下就是幾個常用命令的返回值及其代表的意義:

  backup

  0 備份成功

  1 未找到備份文件

  2 文件共享沖突阻止備份完成

  3 用戶用ctrl-c中止備份

  4 由于致命的錯誤使備份操作中止

  diskcomp

  0 盤比較相同

  1 盤比較不同

  2 用戶通過ctrl-c中止比較操作

  3 由于致命的錯誤使比較操作中止

  4 預置錯誤中止比較

  diskcopy

  0 盤拷貝操作成功

  1 非致命盤讀/寫錯

  2 用戶通過ctrl-c結(jié)束拷貝操作

  3 因致命的處理錯誤使盤拷貝中止

  4 預置錯誤阻止拷貝操作

  format

  0 格式化成功

  3 用戶通過ctrl-c中止格式化處理

  4 因致命的處理錯誤使格式化中止

  5 在提示“proceed with format(y/n)?”下用戶鍵入n結(jié)束

  xcopy

  0 成功拷貝文件

  1 未找到拷貝文件

  2 用戶通過ctrl-c中止拷貝操作

  4 預置錯誤阻止文件拷貝操作

  5 拷貝過程中寫盤錯誤

  =============================================================

  @echo off //不顯示shell的命令。

  Setlocal //環(huán)境改變只適用于這個文件。

  %OS% //為當前的操作系統(tǒng)。

  Rem //注釋一行文本。

  Goto 標簽 //改變執(zhí)行順序,去標簽位置.

 ?。簶撕?//定義一個標簽。

  Set 變量名=值 //定義變量

  Not //取反

  Netstat –na //顯示當前被點用的端口.

  %0 %1 %2 //用于表示批處理文件的參數(shù)0為命令,共1-9個參數(shù)。

  Shift //用于向前一個參數(shù),原1變0,原2變1.每調(diào)用一次shift向前一移動一位。

  Call //調(diào)用其他批處理文件或命令。

  Start 命令 參數(shù) //指示出在另一個窗口中開始運行命令。

  =============================================================

  :: 這段批處理程序可以自動設置Java環(huán)境變量

  @echo off

  IF EXIST %1\bin\java.exe (

  rem 如輸入正確的 Java2SDK 安裝目錄,開始設置環(huán)境變量

  @setx JAVA_HOME %1

  @setx path %path%;%JAVA_HOME%\bin

  @setx classpath %classpath%;.

  @setx classpath %classpath%;%JAVA_HOME%\lib\tools.jar

  @setx classpath %classpath%;%JAVA_HOME%\lib\dt.jar

  @setx classpath %classpath%;%JAVA_HOME%\jre\lib\rt.jar

  @echo on

  @echo Java 2 SDK 環(huán)境參數(shù)設置完畢,正常退出。

  ) ELSE (

  IF "%1"=="" (

  rem 如沒有提供安裝目錄,提示之后退出

  @echo on

  @echo 沒有提供 Java2SDK 的安裝目錄,不做任何設置,現(xiàn)在退出環(huán)境變量設置。

  ) ELSE (

  rem 如果提供非空的安裝目錄但沒有bin\java.exe,則指定的目錄為錯誤的目錄

  @echo on

  @echo 非法的 Java2SDK 的安裝目錄,不做任何設置,現(xiàn)在退出環(huán)境變量設置。

  )

  )

  學習啦小編介紹了什么是批處理文件的相關知識,希望你喜歡。

.reg

  2) 修改/添加注冊表內(nèi)容

  a.一般的添加或修改

  reg add "HKCU\Environment" /v Java_Home /t reg_sz /d "D:\Java\jdk1.6.0_07" /f

  上句解析:“HKCU”是“HKEY_CURRENT_USER”的縮寫,不用縮寫用全稱也可以;

  添加名稱為“Java_Home”的變量;類型為“reg_sz”,另一種常見類型是“reg_dword”;值為 D:\Java\jdk1.6.0_07;

  b.使用變量

  set SoftWareHome=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java

  reg add "%SoftWareHome%Web Start class="main">

批處理文件

時間: 春健736 分享

  c.如果注冊表的名稱有空格,或者數(shù)據(jù)用特殊符號時

  reg add "%SoftWareHome2%\HelpCommands" /v "01:Online Documentation" /t reg_sz /d "\"%cd%\Documentation\Index.htm\"" /f

  傳入值為(值用雙引號括起來的):"D:\ProgramFiles class="main">

批處理文件

時間: 春健736 分享

  reg add "%SoftWareHome2%\Paths" /v ReportTemplates /t reg_sz /d "%cd%\Resource Files\Report Templates\" /f

  傳入值為(“\”結(jié)尾的): E:\Holemar class="main">

批處理文件

時間: 春健736 分享

  d.增加空的內(nèi)容

  reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1"

  e.添加或修改默認值

  reg add "%vpath%InstallPath" /ve /t reg_sz /d "%cd%" /f

  這里用“/ve”來代替一般修改時的“/v 變量名”,即可修改默認值了

  3) 刪除注冊表的內(nèi)容

  雙引號里面的是注冊表的目錄,下面兩句將刪除這目錄下的所有信息

  reg delete "HKEY_CURRENT_USER\Software\RealVNC" /f

  reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC" /f

  雙引號里面的是注冊表的目錄,下面一句將刪除這目錄下指定的某個信息

  reg delete "HKEY_LOCAL_MACHINE\Software\RealVNC" /v VNC_Server /f

  4) 注冊表的常用位置

  a.系統(tǒng)啟動項:

  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

  [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]

  example: REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run /v VNC_Server /t REG_SZ /d "%cd%\VNC_Server.bat" /f

  b.系統(tǒng)環(huán)境變量:

  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]

  c.當前用戶的環(huán)境變量:

  [HKEY_CURRENT_USER\Environment]

  5) 修改注冊表之后,結(jié)束并重新加載explorer.exe進程,可刷新注冊表,令其生效

  taskkill /f /im explorer.exe >nul

  start "" "explorer.exe"

  七、系統(tǒng)服務

  1) 停止服務:NET STOP 服務名

  啟動服務:NET Start 服務名

  2) 設置啟動類型

  自動: SC CONFIG 服務名 START= auto

  手動: SC CONFIG 服務名 START= demand

  已禁用:SC CONFIG 服務名 START= disabled

  附:“START= ”等號后面必須要有一個空格。(start還有boot,system兩個值)

  Sample: SC CONFIG Spooler START= demand (打印機加載項,設置成手動,默認自動)

  3) 查看系統(tǒng)服務:start %SystemRoot%\system32\services.msc /s

  八、setlocal與變量延遲

  0) 在沒有開啟變量延遲的情況下,某條命令行中的變量改變,必須到下一條命令才能體現(xiàn)。

  另外例如for命令等,其后用一對圓括號閉合的所有語句也當作一行。

  example:

  set a=4

  set a=5 & echo %a%

  結(jié)果:4

  也可以對這種機制加以利用,如下的變量交換

  example:

  set var1=abc

  set var2=123

  echo 交換前: var1=%var1% var2=%var2%

  set var1=%var2%& set var2=%var1%

  echo 交換后: var1=%var1% var2=%var2%

  1) 啟動批處理文件中環(huán)境變量的本地化。本地化將持續(xù)到出現(xiàn)匹配的 endlocal 命令或者到達批處理文件結(jié)尾為止。

  語法: setlocal {enableextension | disableextensions} {enabledelayedexpansion | disabledelayedexpansion}

  enableextension: 啟用命令擴展,直到出現(xiàn)匹配的 endlocal 命令,無論 setlocal 命令之前的設置如何。

  disableextensions: 禁用命令擴展,直到出現(xiàn)匹配的 endlocal 命令,無論 setlocal 命令之前的設置如何。

  enabledelayedexpansion: 啟用延遲的環(huán)境變量擴展,直到出現(xiàn)匹配的 endlocal 命令,無論 setlocal 命令之前的設置如何。

  disabledelayedexpansion: 禁用延遲的環(huán)境變量擴展,直到出現(xiàn)匹配的 endlocal 命令,無論 setlocal 命令之前的設置如何。

  2) 為了能夠感知環(huán)境變量的動態(tài)變化,批處理設計了變量延遲。簡單來說,在讀取了一條完整的語句之后,不立即對該行的變量賦值,而會在某個單條語句執(zhí)行之前再進行賦值,也就是說“延遲”了對變量的賦值。

  examle:

  setlocal enabledelayedexpansion

  set a=4

  set a=5 & echo !a!

  結(jié)果: 5

  變量延遲的啟動語句是“setlocal enabledelayedexpansion”,并且變量要用一對嘆號“!!”括起來

  由于啟動了變量延遲,所以批處理能夠感知到動態(tài)變化,即不是先給該行變量賦值,而是在運行過程中給變量賦值,因此此時a的值就是5了

  另外,啟動變量延遲,“%”的變量還是不變

  example2:

  setlocal enabledelayedexpansion

  for /l %%i in (1,1,5) do (

  set a=%%i

  echo !a!

  )

  結(jié)果,打印從1到5;如果不變量延遲,一個變量也沒有打印

  九、文件處理

  1.刪除

  1) 刪除一個文件或多個文件

  del /s /q /f d:\test\a.bat

  將直接刪除d:\test\a.bat,沒有任務提示

  del temp\* /q /f /s

  將直接刪除 本目錄的 temp 目錄的所有文件,沒有任務提示

  刪除文件的時候可以使用“*”作通配符

  2) 刪除一個空目錄

  rd /q /s d:\test\log

  將直接刪除d:\test\log目錄,如果log目錄里面有文件將無法刪除

  3) 刪除一個非空目錄 (必須指定目錄名稱)

  rmdir /q /s d:\test\logs

  必須指定目錄名稱,不能使用通配符

  /S 除目錄本身外,還將刪除指定目錄下的所有子目錄

  /Q 安靜模式,帶 /S 刪除目錄樹時不要求確認

  無論里面是否有文件或文件夾將全部直接刪除

  2.創(chuàng)建目錄

  MKDIR [drive:]path

  MD [drive:]path

  路徑有空格時,可以用雙引號括起來,也可以用 替代

  實踐部分:

  ======================================================================

  一、小摘錄:

  1. 調(diào)用其他程序時,對文件的大小寫不敏感,文件后綴也可忽略

  如:start LeapFTP.exe 與 start leapftp 效果一樣,都是運行“LeapFTP.exe”文件

  每行的開頭的字符串會自動查找程序來運行,還可用雙引號引起來(文件名或目錄名含空格時必須用)

  如:"D:\Program Files\Leap FTP.exe"

  "LeapFTP.exe" 可正常運行文件,start "" "LeapFTP.exe" 也可以正常運行文件(注意,第一個參數(shù)是窗口顯示的標題)

  3. copy C:\test\*.* D:\back (復制C盤test文件夾的所有文件(不包括文件夾及子文件夾里的東西)到D盤的back文件夾)

  4. dir c:\*.* > a.txt (將c盤文件列表寫入 a.txt 中)

  5. > 生成文件并寫入內(nèi)容(如果有這文件則覆蓋), >> 文件里追加內(nèi)容

  6. md d:\aa (創(chuàng)建文件夾)

  7. 在命令末尾加上“>NUL 2>NUL”,表示隱蔽返回信息。

  8. 等待用戶輸入: set /p 變量名=屏幕顯示信息。 Sample:set /p pass=請輸入密碼:

  9. 讓用戶按回車退出

  小技巧(替代pause),文件的最后一句:set /p tmp=操作結(jié)束,請按回車鍵退出...

  10.設置標題: title JDK安裝

  11.設置屏幕顯示顏色,如綠色: color 0a

  12.清屏: cls

  13.查看自己的IP:

  for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i

  echo %ip% (這時的 %ip% 就是自己的IP地址)

  14. 修改文件的更新日期

  copy 文件名+,,>nul (修改為當前時間,如果要修改為指定時間,先修改系統(tǒng)時間,再改回系統(tǒng)時間)

  15. 修改文件的后綴名

  ren C:\test\*.jpg *.JPG

  for /r %%c in (*.jpg) do (ren %%c *.JPG) :: 修改當前目錄下的所有文件的后綴名,包括子目錄的

  16. 修改文件的文件名

  rename test.jpg test2.JPG

  rename *.jpg *.888.JPG

  17. 查看DNS、IP、Mac等

  1) Win98: winipcfg

  2) Win2000以上: Ipconfig /all

  3) NSLOOKUP

  18.查看IP上的共享資源,就可以

  net view 192.168.10.8

  19.共享

  A.查看你機器的共享資源: net share

  B.手工刪除共享

  net share 共享資源名稱$ /d

  注意$后有空格。

  C.增加一個共享:

  net share mymovie=e:\downloads\movie /users:3

  mymovie 共享成功。 同時限制鏈接用戶數(shù)為3人。

  20.打開某網(wǎng)站

  start iexplore.exe http://www.baidu.com

  二、實例:

  1. 生成 reg 文件,運行它,再刪除它

  echo "更改windows安裝文件的路徑"

  echo Windows Registry Editor Version 5.00 > c:\setupreg.reg

  echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup] >> c:\setupreg.reg

  echo "ServicePackSourcePath"="D:\Win2003\" >> c:\setupreg.reg

  echo "SourcePath"="D:\Win2003\" >> c:\setupreg.reg

  :: 寫入注冊表

  regedit /S c:\setupreg.reg

  :: 刪除注冊表文件

  del c:\setupreg.reg

  2.調(diào)用了exe文件,結(jié)束后沒有關閉,解決方式

  用start命令運行文件,如:

  start LeapFTP.exe 192.168.0.100

  3.設置系統(tǒng)環(huán)境變量

  :: 有這個環(huán)境變量,則不需再設置,直接結(jié)束

  if not "%JAVA_HOME%" == "" exit

  :: 設置環(huán)境變量的地址

  set inputJavaHome=%cd%\jdk1.6.0_07

  :: 設置環(huán)境變量,也可以設置當前用戶的變量

  set EnvironmentHome=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

  echo 正在設置環(huán)境變量,請稍候......

  reg add "%EnvironmentHome%" /v JAVA_HOME /t reg_sz /d "%inputJavaHome%" /f

  reg add "%EnvironmentHome%" /v ClassPath /t reg_sz /d ".;%%JAVA_HOME%%\lib" /f

  reg add "%EnvironmentHome%" /v Path /t reg_sz /d "%%JAVA_HOME%%\bin;%Path%" /f]

  :: 刷新,令環(huán)境變量生效

  taskkill /f /im explorer.exe >nul

  start "" "explorer.exe"

  4.隱藏某目錄的所有文件及文件夾

  cd /d 要隱藏的目錄(如:D:)

  for /f "usebackq delims=" %%A in (`dir /a /b`) do (attrib "%%A" -r +h -s)

  5.在批處理中使用密碼。密碼為admin,輸入正確,跳轉(zhuǎn)到next1 ,若輸入密碼錯誤3次,則鎖屏。。

  @echo off

  set num=0

  :11

  set /p pass=請輸入密碼:

  if "%pass%"=="admin" goto next1

  set /a num=%num% + 1

  if %num%==3 goto no1

  goto 11

  :no1

  %windir%\system32\rundll32.exe user32.dll,LockWorkStation

  goto 11

  :next1

  echo 密碼正確,執(zhí)行下面的程式

  pause

  6.清空回收站(未成功)

  @echo off

  del /f /s /q c:\recycler\*.*

  ::刷新屏幕

  taskkill /f /im explorer.exe >nul

  start "" "explorer.exe"

  7.讓系統(tǒng)斷斷續(xù)續(xù)地鳴叫

  @echo off

  :begin

  :: 發(fā)出鳴叫(“”實際就是ASCII碼值為7的特殊字符(蜂鳴鍵beep)

  echo 

  :: 讓程序暫停一小陣子

  ping -n 1 -l 1 127.1>nul

  goto :begin

  8.將 FAT 卷轉(zhuǎn)換成 NTFS

  利用“CONVERT.exe”進行,解析如下:

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

  volume 指定驅(qū)動器號(后面跟一個冒號)、裝載點或卷名。

  /FS:NTFS 指定要被轉(zhuǎn)換成 NTFS 的卷。

  /V 指定 Convert 應該用詳述模式運行。

  /CvtArea:filename

  將根目錄中的一個接續(xù)文件指定為NTFS 系統(tǒng)文件的占位符。

  /NoSecurity 指定每個人都可以訪問轉(zhuǎn)換的文件和目錄的安全設置。

  /X 如果必要,先強行卸載卷。該卷的所有打開的句柄則無效。

  程序如下:

  @ ECHO OFF

  @ ECHO.

  @ ECHO. 說 明

  @ ECHO --------------------------------------------------------------------------

  @ ECHO NTFS是一種磁盤格式。該格式能存放大于4G的單個文件(如高清電影文件),并可對

  @ ECHO 文件夾進行加密,但有個缺點是DOS下無法訪問。建議D盤及其后的盤使用NTFS格式,

  @ ECHO C盤如非必要可以不轉(zhuǎn)換,F(xiàn)AT32與NTFS這兩種格式的讀寫速度幾乎是沒有差別的。

  @ ECHO --------------------------------------------------------------------------

  @ ECHO.

  convert c: /fs:ntfs

  :: D盤也轉(zhuǎn)成 NTFS

  convert d: /fs:ntfs

  9. 獲取我的文檔

  SET SF="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"

  FOR /F "tokens=2,*" %%I IN ('REG QUERY %SF% /v Personal 2^>NUL^|FIND /I "Personal"') DO SET "myDoc=%%~J"

  :: 復制文件到我的文檔

  XCOPY /D /E /R /Y /C "%cd%\test.txt" "%myDoc%\test\"

  10 獲取當前目錄路徑

  cd ./

  set CURR_PATH=%cd%

  ==========================================

  實例:

  3.IF-ERRORLEVEL

  @ECHO OFF

  XCOPY C:\AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 文件拷貝失敗

  IF ERRORLEVEL 0 ECHO 成功拷貝文件

  如果文件拷貝成功,屏幕就會顯示“成功拷貝文件”,否則就會顯示“文件拷貝失敗”。

  IF ERRORLEVEL 是用來測試它的上一個DOS命令的返回值的,注意只是上一個命令的返回值,而且返回值必須依照從大到小次序順序判斷。因此下面的批處理文件是錯誤的:

  @ECHO OFF

  XCOPY C:\AUTOEXEC.BAT D:\

  CHO 成功拷貝文件

  IF ERRORLEVEL 1 ECHO 未找到拷貝文件

  IF ERRORLEVEL 2 ECHO 用戶通過ctrl-c中止拷貝操作

  IF ERRORLEVEL 3 ECHO 預置錯誤阻止文件拷貝操作

  IF ERRORLEVEL 4 ECHO 拷貝過程中寫盤錯誤

  無論拷貝是否成功,后面的:

  未找到拷貝文件

  用戶通過ctrl-c中止拷貝操作

  預置錯誤阻止文件拷貝操作

  拷貝過程中寫盤錯誤

  都將顯示出來。

  以下就是幾個常用命令的返回值及其代表的意義:

  backup

  0 備份成功

  1 未找到備份文件

  2 文件共享沖突阻止備份完成

  3 用戶用ctrl-c中止備份

  4 由于致命的錯誤使備份操作中止

  diskcomp

  0 盤比較相同

  1 盤比較不同

  2 用戶通過ctrl-c中止比較操作

  3 由于致命的錯誤使比較操作中止

  4 預置錯誤中止比較

  diskcopy

  0 盤拷貝操作成功

  1 非致命盤讀/寫錯

  2 用戶通過ctrl-c結(jié)束拷貝操作

  3 因致命的處理錯誤使盤拷貝中止

  4 預置錯誤阻止拷貝操作

  format

  0 格式化成功

  3 用戶通過ctrl-c中止格式化處理

  4 因致命的處理錯誤使格式化中止

  5 在提示“proceed with format(y/n)?”下用戶鍵入n結(jié)束

  xcopy

  0 成功拷貝文件

  1 未找到拷貝文件

  2 用戶通過ctrl-c中止拷貝操作

  4 預置錯誤阻止文件拷貝操作

  5 拷貝過程中寫盤錯誤

  =============================================================

  @echo off //不顯示shell的命令。

  Setlocal //環(huán)境改變只適用于這個文件。

  %OS% //為當前的操作系統(tǒng)。

  Rem //注釋一行文本。

  Goto 標簽 //改變執(zhí)行順序,去標簽位置.

 ?。簶撕?//定義一個標簽。

  Set 變量名=值 //定義變量

  Not //取反

  Netstat –na //顯示當前被點用的端口.

  %0 %1 %2 //用于表示批處理文件的參數(shù)0為命令,共1-9個參數(shù)。

  Shift //用于向前一個參數(shù),原1變0,原2變1.每調(diào)用一次shift向前一移動一位。

  Call //調(diào)用其他批處理文件或命令。

  Start 命令 參數(shù) //指示出在另一個窗口中開始運行命令。

  =============================================================

  :: 這段批處理程序可以自動設置Java環(huán)境變量

  @echo off

  IF EXIST %1\bin\java.exe (

  rem 如輸入正確的 Java2SDK 安裝目錄,開始設置環(huán)境變量

  @setx JAVA_HOME %1

  @setx path %path%;%JAVA_HOME%\bin

  @setx classpath %classpath%;.

  @setx classpath %classpath%;%JAVA_HOME%\lib\tools.jar

  @setx classpath %classpath%;%JAVA_HOME%\lib\dt.jar

  @setx classpath %classpath%;%JAVA_HOME%\jre\lib\rt.jar

  @echo on

  @echo Java 2 SDK 環(huán)境參數(shù)設置完畢,正常退出。

  ) ELSE (

  IF "%1"=="" (

  rem 如沒有提供安裝目錄,提示之后退出

  @echo on

  @echo 沒有提供 Java2SDK 的安裝目錄,不做任何設置,現(xiàn)在退出環(huán)境變量設置。

  ) ELSE (

  rem 如果提供非空的安裝目錄但沒有bin\java.exe,則指定的目錄為錯誤的目錄

  @echo on

  @echo 非法的 Java2SDK 的安裝目錄,不做任何設置,現(xiàn)在退出環(huán)境變量設置。

  )

  )

  學習啦小編介紹了什么是批處理文件的相關知識,希望你喜歡。

581027