1.綜述
(1)、 “.bat”: 這是微軟的第一個批處理文件的后綴名,,在幾乎所有的Windows 操作系統(tǒng)內(nèi)都能運(yùn)行,。 (2),、 “.cmd”: 是為Windows NT 設(shè)計的命令行腳本, 為Cmd.exe shell而設(shè)計的,, 對于COMMAND.COM不具有向后兼容性,。 (3)、目前所知道的.cmd 和 .bat文件的區(qū)別是對ERRORLEVEL變量的改變:當(dāng)Command Extensions (命令行擴(kuò)展)處于enabled狀態(tài)時,,哪怕是.cmd文件中一個成功執(zhí)行的命令都可以改變ERRORLEVEL的值,,而在.bat 文件中ERRORLEVEL 變量只有在遇到錯誤的時候才發(fā)生改變。 2.@echo off/echo on (1). “echo” 用來在控制臺上顯示信息,。 (2). “echo.” 用來顯示一空行,。(注意:echo和右下角的點(diǎn)之間沒有空格,如果有空格就變成顯示句點(diǎn)了,。) (3). “echo off”: 在使用了這行命令之后,其他命令都只顯示命令的結(jié)果,,而不顯示命令本身,。 (4). “echo on”: 這是默認(rèn)值,表示顯示所有的命令結(jié)果和命令行本身,。 (5).“echo”: 當(dāng)執(zhí)行echo而不帶任何參數(shù)的時候,,會顯示echo的打開或關(guān)閉的狀態(tài):“ECHO is on” 或者 “ECHO is off”。 (6). “@”:@ 符號表示不顯示本行的命令本身,。如果只用echo off,,雖然echo off后面的命令不顯示出來,只顯示命令的結(jié)果,但是echo off它自己確被顯示出來了,,這就是使用@echo off的原因。 3.SETLOCAL/ENDLOCAL (1). SETLOCAL用來控制批處理文件中變量的可見性,。就是高級語言常說的局部變量,。凡是在SETLOCAL和ENDLOCAL之間的變量都是局部的,,以免 被其他腳本文件改變變量的值,而沒有使用這個標(biāo)示的都是Global visible(全局變量),,很可能被其他文件所改變。下面的例子很好的說明了這一點(diǎn),。
由此可見變量的作用域在簡單的批處理文件還是很慎重,,否則可以造成千變?nèi)f化的結(jié)果,這樣這個腳本就很不穩(wěn)定了,。所以,,變量作用域很重要,,得注意。 (2). EnableDelayedExpansion. (參考百度:http://baike.baidu.com/view/2923132.htm )
在CMD里面,,系統(tǒng)使用“^”作為脫字符。使用變量延遲擴(kuò)展ENABLEDELAYEDEXPANSION之后,,脫字符^ 就可以一直產(chǎn)生作用,而不再局限于一個命令行。這樣對于處理包含HTML和XML格式的字符的時候,就方便多了,。請看下面的例子。 @echo off REM 這個文件會創(chuàng)建World.txt到本地磁盤,,文件內(nèi)容為Hello,。 REM 也就是第二次運(yùn)行的時候,脫字符沒有發(fā)揮作用,。
@echo off REM 這個文件會輸出Hello>World.txt,,脫字符一直產(chǎn)生作用。
REM 使用變量延遲擴(kuò)展來處理html語句,。
(3). DISABLEEXTENSIONS. 值得注意的是,,這里的擴(kuò)展不是擴(kuò)展名,而是命令的擴(kuò)展功能,,比如 “/F” 參數(shù)就是For循環(huán)的命令擴(kuò)展,。 只有使用了命令擴(kuò)展我們才能執(zhí)行下面的語句。 FOR /F "DELIMS=" %%a IN (test.TXT) DO @echo %%a 否則我們要輸出一個文件,只能使用Type test.txt了,。命令擴(kuò)展默認(rèn)是開啟的,。 4.Set (1). SET 不帶任何參數(shù): 將顯示當(dāng)前用戶的所有系統(tǒng)環(huán)境變量。(set) (2). SET 帶一個變量名: 嘗試搜索并顯示以這個變量名開頭的環(huán)境變量,。(set PROCESSOR就會顯示以PROCESSOR開始的變量) (3). SET variable=string: 給一個變量賦值,。 (4). SET “”: 使用一對空的雙引號,會顯示一個不帶參數(shù)的情況下沒顯示出來的變量,。我這里就顯示下面兩個奇怪的變量,。 =C:=C:\Users\Lingli =E:=E:\Powershell 使用cd %=C:%還真可以轉(zhuǎn)到C:\Users\Lingli目錄下。 (5). SET “var=”(or SET var=): 刪除一個變量,。 (6). SET /A variable=expression: 使用算數(shù)運(yùn)算符來給變量賦值,。 () - 組合 ! ~ - - 一元操作符 * / % - 算數(shù)運(yùn)算符 + - -算數(shù)運(yùn)算符 << >> - 邏輯偏移 & - 位與 ^ - 位異或 | - 位或 = *= /= %= += -= - 賦值 &= ^= |= <<= >>= (7). SET /P variable=[提示字符]:提示用戶輸入并把輸入的值賦給variable。提示字符可以為空,。有時可以使用CHOICE來代替SET /P.
(8). 有用的環(huán)境變量,。 %CD% - 當(dāng)前路徑名。 %DATE% - 當(dāng)前日期,。 %TIME% - 當(dāng)前時間,。 %RANDOM% - 顯示0 到32767之間的一個隨機(jī)數(shù)。你看CMD也是可以獲取隨機(jī)數(shù)的,。 5.Choice (1). 詳細(xì)語法:
(2). 例子:
6.Rem and Arguments. (1). REM [comment]: 批處理文件的注釋符,可以使用“::” 來代替REM,。 (2). 參數(shù),。 %0對應(yīng)文件名本身,其他分別對應(yīng)一個參數(shù)值,,支持255個參數(shù),。
(3). 文件名參數(shù)擴(kuò)展。 當(dāng)使用文件名作參數(shù)的時候,,可以使用如下文件名擴(kuò)展,。下面的例子擴(kuò)展%1,其實(shí)對所有的參數(shù)都可以進(jìn)行類似的擴(kuò)展,。 上面的擴(kuò)展是可以組合的: %~dp1 - 擴(kuò)展%1 為磁盤名稱和路徑名,。 %~nx2 - 擴(kuò)展%2 為文件名和文件后綴名。
7.IF 語句 (1). 詳細(xì)語法:
Key /I : 比較時不考慮文件名大小寫,,即大小寫不敏感,。 compare-op : 邏輯比較 EQU : equal 等于 NEQ : not equal 不等于 LSS : less than 小于 LEQ : less than or equal小于或等于 GTR : greater than 大于 GEQ : greater than or equal大于或等于 (2). 例子(可以看出If語句也是一條語句) IF EXIST filename (del filename) ELSE ( echo The file was not found.)
8.For 循環(huán) (1). 詳細(xì)語法:
eol=c - 行首注釋符。如果有這個注釋符,,這一行不做處理,。 skip=n - 制定前n行跳過,不處理 delims=xxx - 分隔符集合,。默認(rèn)分隔符是空格和Tab,。 tokens=x,y,m-n - 選擇哪一塊用于循環(huán)操作,。 usebackq - 當(dāng)文件名有空格需要使用雙引號時,使用usebackq把雙引號內(nèi)的東西當(dāng)文件處理,,否則當(dāng)字符串處理,。 注意: 在批處理文件中,參數(shù)使用%%parameter,,而當(dāng)你拿到命令行使用的時候,,使用%parameter,就是一個百分號的區(qū)別,。同時變量名區(qū)分大小寫,,所以%g和G是不相同的。 (set) 說明是文件集合,,一個文件或多個文件,,還可以對文件名使用通配符。 (2). 例子:
9.Net. (1). 管理服務(wù): Net start, stop, pause, continue [service],。 (2). 連接到一個共享文件:Net use,。 NET USE [磁盤名:] \\共享名稱[\子目錄名] [密碼] [/USER:[域名\]用戶名] NET USE磁盤名:]: /delete (3). Net share: 顯示本地的所有共享,包括隱藏的共享,。 (4). Net share ShareName: 顯示共享的相關(guān)信息,。 (5). 創(chuàng)建一個本地共享: NET SHARE sharename=drive:path /REMARK:"text" [/CACHE:Manual | Automatic | No ] (6). 修改用戶數(shù)量限制和標(biāo)示。 NET SHARE sharename /USERS:number /REMARK:"text" NET SHARE sharename /UNLIMITED /REMARK:"text" (7). 刪除共享: NET SHARE {sharename | devicename | drive:path} /DELETE (8). Net view \\計算機(jī)名: 列出遠(yuǎn)程機(jī)器的所有共享,。 (9). Net localgroup: 把一個賬戶加入一個本地組,,如加入管理員組:net localgroup administrators DomainName\UserName /add (10). 機(jī)器重命名: netdomrenamecomputer 原機(jī)器名 /newname:修改后的機(jī)器名 /UserD:user /PasswordD:password (11). 加入域: net dom join 計算機(jī)名/domain:域名 /UserD:域管理員賬戶 /PasswordD:域管理員密碼 |
|