久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

BAT CMD 批處理文件腳本總結(jié)

 ayanmw 2010-08-29
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),。

@echo off
setlocal 
set version=1.0
echo the first version is %version%
endlocal
echo the second version is %version%
::The follow is global variable
set version=2.0
echo the third version is %version%
  執(zhí)行這個文件,,將輸出:

the first version is 1.0
the second version is
the third version is 2.0

  第二個version是全局變量,但是沒有定義,,所以是空值。再次執(zhí)行:

the first version is 1.0
the second version is 2.0
the third version is 2.0

@echo off
setlocal 
set version=1.0
echo the first version is %version%
endlocal
echo the second version is %version%
::The follow is global variable
set version=5.0
echo the third version is %version%
  執(zhí)行第二個文件:

the first version is 1.0
the second version is 2.0
the third version is 5.0

  再次執(zhí)行:

the first version is 1.0
the second version is 5.0
the third version is 5.0

  由此可見變量的作用域在簡單的批處理文件還是很慎重,,否則可以造成千變?nèi)f化的結(jié)果,這樣這個腳本就很不穩(wěn)定了,。所以,,變量作用域很重要,,得注意。

  (2). EnableDelayedExpansion. (參考百度:http://baike.baidu.com/view/2923132.htm )

  代碼

  結(jié)果

@echo off
setlocal
set var=test & echo show %var%
endlocal

  show

  當(dāng)解析到%var%是,,CMD還沒有執(zhí)行完任何語句,,所以系統(tǒng)并不認(rèn)識這個變量,所以認(rèn)為變量沒有定義,,所以顯示空值。

@echo off
Setlocal ENABLEDELAYEDEXPANSION
set var=test & echo show !var!
endlocal

  show test

  使用了變量延遲擴(kuò)展,,并使用!var!,,其實(shí)在執(zhí)行的時候也不認(rèn)識這個變量,但是這條語句執(zhí)行完以后,仍然返回去賦值,。這種事后處理,,就是變量延遲擴(kuò)展,。

For語句看起來寫了很多行,,其實(shí)認(rèn)為是一條語句,。所以如果在沒有使用變量延遲擴(kuò)展的時候,在For語句里的每一行,,都只是記憶著系統(tǒng)所記憶的東西,。而 使用了變量延遲擴(kuò)展之后,,會執(zhí)行完了整條語句,,再“事后處理”給與賦值,,然后才顯示到控制臺,。下面的例子很能說明問題。

@echo off
setlocal
:: count to 5
set _tst=0
FOR /l %%G in (1,1,5) Do (echo [%_tst%] & set /a _tst+=1)
echo Total = %_tst%
[0]
[0]
[0]
[0]
[0]
Total = 5
@echo off
setlocal
:: count to 5
set _tst=0
FOR /l %%G in (1,1,5) Do (echo [!_tst!] & set /a _tst+=1)
echo Total = !_tst!
[0]
[1]
[2]
[3]
[4]
Total = 5
     

  在CMD里面,,系統(tǒng)使用“^”作為脫字符。使用變量延遲擴(kuò)展ENABLEDELAYEDEXPANSION之后,,脫字符^ 就可以一直產(chǎn)生作用,而不再局限于一個命令行。這樣對于處理包含HTML和XML格式的字符的時候,就方便多了,。請看下面的例子。

  @echo off

  REM 這個文件會創(chuàng)建World.txt到本地磁盤,,文件內(nèi)容為Hello,。

  REM 也就是第二次運(yùn)行的時候,脫字符沒有發(fā)揮作用,。

SETLOCAL 
Set _html= Hello^>World.txt
Echo %_html%
ENDLOCAL

  @echo off

  REM 這個文件會輸出Hello>World.txt,,脫字符一直產(chǎn)生作用。

SETLOCAL EnableDelayedExpansion
Set _html= Hello^>World.txt
Echo !_html!
ENDLOCAL
@echo off

  REM 使用變量延遲擴(kuò)展來處理html語句,。

SETLOCAL EnableDelayedExpansion
Set _html=html format: ^<title^>Hello world^</title^>
Echo !_html!
ENDLOCAL

  (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.

@echo off
setlocal
set /p version=Please enter the QQ version:
echo you will install QQ %version%
endlocal

  (8). 有用的環(huán)境變量,。

  %CD% - 當(dāng)前路徑名。

  %DATE% - 當(dāng)前日期,。

  %TIME% - 當(dāng)前時間,。

  %RANDOM% - 顯示0 到32767之間的一個隨機(jī)數(shù)。你看CMD也是可以獲取隨機(jī)數(shù)的,。

  5.Choice

  (1). 詳細(xì)語法:

  CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

  該命令可以提供用戶一個選擇列表,,并使用ERRORLEVEL參數(shù)返回用戶選擇項的序號。第一項對于1,,第二項對應(yīng) 2,,依次類推,如果用戶按CTRL+C退出而不選擇,,就返回0,。

  /C    choices

  /N

  /CS

  /T    timeout

  /D    choice

  /M    text

  用字母列出所提供的選項,默認(rèn)是"YN",,即是和否,。

  隱藏選擇列表。如果使用這個選項,,那么提示的文字里最后寫清楚以下,。不推薦使用,。

  激活大小寫敏感,。默認(rèn)是對大小寫不敏感。

  選擇超時設(shè)置,。

  超時后的默認(rèn)選項,。

  提示字符。最好把要選擇的問題將清楚。

  (2). 例子:

@echo off
SETLOCAL
CHOICE /C ABC /M "選擇登陸用戶:A - 管理員,;B 域用戶,;C注冊用戶"
IF %errorlevel%==1 goto :Admin 
IF %errorlevel%==2 goto :Domain
IF %errorlevel%==3 goto :Local
goto Exit
 
:Admin
    echo 歡迎管理員
    goto Exit
 
:Domain
    echo 歡迎域用戶
    goto Exit
 
:Local
    echo 歡迎注冊用戶
    goto Exit
 
:Exit
endlocal

  6.Rem and Arguments.

  (1). REM [comment]: 批處理文件的注釋符,可以使用“::” 來代替REM,。

  (2). 參數(shù),。

  %0對應(yīng)文件名本身,其他分別對應(yīng)一個參數(shù)值,,支持255個參數(shù),。

  Test.cmd   1   2   3   …   n   …   255
  %0   %1   %2   %3   …   %n   …   %255

  (3). 文件名參數(shù)擴(kuò)展。

  當(dāng)使用文件名作參數(shù)的時候,,可以使用如下文件名擴(kuò)展,。下面的例子擴(kuò)展%1,其實(shí)對所有的參數(shù)都可以進(jìn)行類似的擴(kuò)展,。

%~f1 - 擴(kuò)展%1 為帶路徑的全名,。
%~d1 - 只顯示磁盤名稱。
%~p1 - 只顯示文件路徑,。
%~n1 - 只顯示文件名,,不包括后綴名,也不包括路徑,。
%~x1 - 只顯示后綴名,。
%~s1 - 變成短文件名,將包含“~”符號,。
%~1 - 有時候文件名包含空格是,,會對文件名加雙引號。這個功能是去掉雙引號,。
%~a1 - 顯示文件的屬性,。
%~t1 - 顯示文件的修改時間。
%~z1 - 顯示文件的大小,。
 

  上面的擴(kuò)展是可以組合的:

  %~dp1 - 擴(kuò)展%1 為磁盤名稱和路徑名,。

  %~nx2 - 擴(kuò)展%2 為文件名和文件后綴名。

::Test.bat
::Example: test.bat test.bat
@echo off
setlocal
set fn=%~f1
echo %fn%
endlocal

  7.IF 語句

  (1). 詳細(xì)語法:

File syntax   
IF [NOT] EXIST filename command 
IF [NOT] EXIST filename (command) ELSE (command)
 
String syntax   
IF [/I] [NOT] item1==item2 command 
IF [/I] item1 compare-op item2 command
IF [/I] item1 compare-op item2 (command) ELSE (command)
 
Error Check Syntax
IF [NOT] DEFINED variable command
IF [NOT] ERRORLEVEL number command 
IF CMDEXTVERSION number command

  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.)

IF EXIST filename (
del filename
) ELSE ( 
echo The file was not found.
)

  8.For 循環(huán)

  (1). 詳細(xì)語法:

FOR-Files
FOR %%parameter IN (set) DO command 
 
FOR-Files-Rooted at Path   
FOR /R [[drive:]path] %%parameter IN (set) DO command 
 
FOR-Folders
FOR /D %%parameter IN (folder_set) DO command 
 
FOR-List of numbers   
FOR /L %%parameter IN (start,step,end) DO command 
 
FOR-File contents   
FOR /F ["options"] %%parameter IN (filenameset) DO command 
FOR /F ["options"] %%parameter IN ("Text string to process") DO command
 
FOR-Command Results 
       FOR /F ["options"] %%parameter IN ('command to process') DO command

  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). 例子:

@echo off
setlocal
for %%G in (*.bat *.txt) do echo %%G
endlocal

  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:域管理員密碼


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多