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

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

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

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

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

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

一、setlocal命令

命令格式

setlocal  [ enableExtensions | disableExtensions ] [ enableDelayedExpansion | disableDelayedExpansion ]

命令功能

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

【enableExtensions參數(shù)】 

 啟用cmd.exe的命令擴展開特性。extension是“擴大,延伸”的意思

【disableExtensions參數(shù)】 

 關閉cmd.exe的命令擴展特性。

【enableDelayedExpansion參數(shù)】 

開啟cmd.exe的變量延遲展開特性。expansion是“擴展,展開”的意思

【disableDelayedExpansionn參數(shù)】 

關閉cmd.exe的變量延遲展開特性。 

【注意】

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

二、endlocal命令

命令格式:

endlocal 

命令功能:

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

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

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

示例

demo1.bat的內容如下:

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

demo2.bat的內容如下:

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

運行

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

C:\>

總結

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

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

寫作不易,如果您覺得對您有用

相關文章

最新評論