日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows Batch [精华]

發(fā)布時間:2025/3/21 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows Batch [精华] 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自:http://www.cnblogs.com/linglizeng/archive/2010/01/29/Bat-CMD-ChineseVerion.html

?

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和右下角的點之間沒有空格,如果有空格就變成顯示句點了。)

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用來控制批處理文件中變量的可見性。就是高級語言常說的局部變量。凡是在SETLOCALENDLOCAL之間的變量都是局部的,以免被其他腳本文件改變變量的值,而沒有使用這個標(biāo)示的都是Global visible(全局變量),很可能被其他文件所改變。下面的例子很好的說明了這一點。

@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!,其實在執(zhí)行的時候也不認(rèn)識這個變量,但是這條語句執(zhí)行完以后,仍然返回去賦值。這種事后處理,就是變量延遲擴(kuò)展。

For語句看起來寫了很多行,其實認(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)生作用,而不再局限于一個命令行。這樣對于處理包含HTMLXML格式的字符的時候,就方便多了。請看下面的例子。

@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ù)都可以進(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ū)分大小寫,所以%gG是不相同的。

(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ī)器重命名: netdom renamecomputer 原機(jī)器名 /newname:修改后的機(jī)器名 /UserD:user /PasswordD:password

11. 加入域: net dom join 計算機(jī)名/domain:域名 /UserD:域管理員賬戶 /PasswordD:域管理員密碼

轉(zhuǎn)載于:https://www.cnblogs.com/itech/archive/2010/01/29/1659465.html

總結(jié)

以上是生活随笔為你收集整理的Windows Batch [精华]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。