欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

DOS 批處理 setlocal命令、endlocal命令詳解

 更新時(shí)間:2024年06月09日 13:07:05   作者:揚(yáng)科網(wǎng)絡(luò)  
setlocal這是一個(gè)命令,它開(kāi)始局部化環(huán)境更改,通常在批處理文件中使用,以確保在腳本中所做的任何環(huán)境更改(例如設(shè)置或修改環(huán)境變量)不會(huì)影響到調(diào)用此批處理的上下文或其他批處理文件

在 cmd (Windows 命令提示符) 腳本中,@setlocal 是一個(gè)常用的組合命令,由兩部分組成:@ 和 setlocal

  • @:在腳本中,@ 用于阻止命令的顯示。通常,在執(zhí)行批處理文件時(shí),每一行命令都會(huì)被顯示出來(lái)。當(dāng)你在一行命令前加上 @,這行命令就不會(huì)在命令提示符窗口中顯示出來(lái)。這經(jīng)常用于使腳本的輸出更加干凈、整潔。
  • setlocal:這是一個(gè)命令,它開(kāi)始局部化環(huán)境更改。通常在批處理文件中使用,以確保在腳本中所做的任何環(huán)境更改(例如設(shè)置或修改環(huán)境變量)不會(huì)影響到調(diào)用此批處理的上下文或其他批處理文件。當(dāng)腳本執(zhí)行完畢,使用 endlocal 命令可以結(jié)束這種局部環(huán)境,恢復(fù)所有的環(huán)境設(shè)置到 setlocal 之前的狀態(tài)。

因此,@setlocal 的組合用途是在批處理文件的開(kāi)始部分使環(huán)境更改局部化,同時(shí)不顯示這條命令本身。這是編寫批處理腳本時(shí)的一種常見(jiàn)做法,以確保腳本不會(huì)無(wú)意中修改全局環(huán)境設(shè)置。

一、setlocal命令

命令格式

setlocal  [ enableExtensions | disableExtensions ] [ enableDelayedExpansion | disableDelayedExpansion ]

命令功能

setlocal 命令用于開(kāi)始批處理文件中環(huán)境變量的本地化。本地化將持續(xù)到出現(xiàn)匹配的 endlocal 命令, 或者到達(dá)批處理文件結(jié)尾為止。

【enableExtensions參數(shù)】 

 啟用cmd.exe的命令擴(kuò)展開(kāi)特性。extension是“擴(kuò)大,延伸”的意思

【disableExtensions參數(shù)】 

 關(guān)閉cmd.exe的命令擴(kuò)展特性。

【enableDelayedExpansion參數(shù)】 

開(kāi)啟cmd.exe的變量延遲展開(kāi)特性。expansion是“擴(kuò)展,展開(kāi)”的意思

【disableDelayedExpansionn參數(shù)】 

關(guān)閉cmd.exe的變量延遲展開(kāi)特性。 

【注意】

enableExtensions參數(shù)、disableExtensions參數(shù)相比 cmd.exe的 /E參數(shù),它們具有更高的優(yōu)先級(jí)。
enableDelayedExpansion參數(shù)、 disableDelayedExpansion參數(shù)相比 cmd.exe的 /V參數(shù),它們具有更高的優(yōu)先級(jí)。

二、endlocal命令

命令格式:

endlocal 

命令功能:

endlocal 命令用于結(jié)束批處理文件中環(huán)境變量的本地化。

【“環(huán)境變量本地化”的作用】

在批處理文件中實(shí)現(xiàn)“環(huán)境變量本地化”,可以避免其對(duì)外部運(yùn)行環(huán)境的“污染”

示例

demo1.bat的內(nèi)容如下:

::demo1.bat
@echo off
set  var=200

demo2.bat的內(nèi)容如下:

::demo2.bat
@echo off
setlocal
set  var=200
endlocal

運(yùn)行

C:\>set var=5
 
C:\>demo1
C:\out>echo %var%
200
 
C:\>set var=5
 
C:\>demo2
C:\>echo %var%

C:\>

總結(jié)

setlocal命令和endlocal命令在批處理文件中有效(在dos命令行環(huán)境中無(wú)效)
setlocal命令執(zhí)行以前的所有變量狀態(tài)(例如:變量值), 在endlocal命令(或者批處理文件)執(zhí)行完后會(huì)被恢復(fù)
在setlocal和endlocal(或者批處理文件的結(jié)尾處)之間,如果定義了新變量,在執(zhí)行 endlocal命令后,該變量會(huì)被刪除(即:其值為空)
在setlocal和endlocal(或者批處理文件的結(jié)尾處)之間,可以正常使用setlocal命令執(zhí)行以前的所有變量(包括外部dos命令行環(huán)境定義的變量)
無(wú)參的setlocal命令和帶參的setlocal命令(例如:setlocal enabledelayedexpansion)都遵守上述規(guī)則
無(wú)參的setlocal命令只對(duì)變量所做的修改進(jìn)行本地化,不會(huì)影響其作用域(setlocal和endlocal(或者批處理文件的結(jié)尾處)之間的局域空間)的命令擴(kuò)展特性和變量延遲展開(kāi)特性。
編寫批處理腳本時(shí),為了不“污染”外部運(yùn)行環(huán)境,同時(shí)對(duì)自己的運(yùn)行環(huán)境進(jìn)行“默認(rèn)設(shè)置”,應(yīng)該在批處理腳本中使用setlocal命令(和endlocal命令),下面是一個(gè)比較常用的“批處理腳本模板”

::demo.bat
@echo off
setlocal enableExtensions 
::    your  code ...
endlocal

寫作不易,如果您覺(jué)得對(duì)您有用

相關(guān)文章

最新評(píng)論