關於批處理中的變數

rague發表於2007-09-24
批處理中的變數,我把他分為兩類,分別為“系統變數”和“自定義變數”

我們現在來詳解這兩個變數!

系統變數:

他們的值由系統將其根據事先定義的條件自動賦值,也就是這些變數系統已經給他們定義了值,不需要我們來給他賦值,我們只需要呼叫而已,我把他們全部列出來!

%ALLUSERSPROFILE%  (allusersprofile)本地 返回“所有使用者”配置檔案的位置。 C:Documents and SettingsAll Users

%APPDATA% (appdata)本地返回預設情況下應用程式儲存資料的位置。 C:Documents and SettingsAdministratorApplication Data

%CD% (cd)本地返回當前目錄字串。 C:Documents and SettingsAdministrator桌面

%CMDCMDLINE% (cmdcmdline)本地返回用來啟動當前的 Cmd.exe 的準確命令列。 cmd /c ""C:Documents and SettingsAdministrator桌面a.bat" "

%CMDEXTVERSION%(cmdextversion)系統返回當前的“命令處理程式擴充套件”的版本號。2

%COMPUTERNAME% (computername)系統返回計算機的名稱。 xxxx

%COMSPEC% (comspec) 系統返回命令列直譯器可執行程式的準確路徑。 C:WINDOWSsystem32cmd.exe

%DATE% 系統返回當前日期。使用與 date /t 命令相同的格式。由 Cmd.exe 生成。有關 date 命令的詳細資訊,請參閱 Date。

%ERRORLEVEL% (errorlevel) 系統返回上一條命令的錯誤程式碼。通常用非零值表示錯誤。

%HOMEDRIVE% (homedrive)系統返回連線到使用者主目錄的本地工作站驅動器號。基於主目錄值而設定。使用者主目錄是在“本地使用者和組”中指定的。 C:

%HOMEPATH% (homepath) 系統返回使用者主目錄的完整路徑。基於主目錄值而設定。使用者主目錄是在“本地使用者和組”中指定的。 Documents and SettingsAdministrator

%HOMESHARE% (homeshare) 系統返回使用者的共享主目錄的網路路徑。基於主目錄值而設定。使用者主目錄是在“本地使用者和組”中指定的。

%LOGONSERVER% (logonserver) 本地返回驗證當前登入會話的域控制器的名稱 xxxx

%NUMBER_OF_PROCESSORS% (numeer_of_processors) 系統指定安裝在計算機上的處理器的數目。

%OS% (os)系統返回作業系統名稱。Windows 2000 顯示其作業系統為 Windows_NT。 Windows_NT

%PATH% (path)系統指定可執行檔案的搜尋路徑。 C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:Program FilesVc++ToolsWinNT;C:Program FilesVc++MSDev98Bin;C:Program FilesVc++Tools;C:Program FilesVC98in

%PATHEXT% (pathext)系統返回作業系統認為可執行的副檔名的列表。 .COM .EXE .BAT .CMD .VBS .VBE .JS .JSE .WSF .WSH

%PROCESSOR_ARCHITECTURE% (processor_architecture) 系統返回處理器的晶片體系結構。值:x86 或 IA64 基於Itanium x86

%PROCESSOR_IDENTFIER% (processor_identfier)系統返回處理器說明。

%PROCESSOR_LEVEL% (processor_level)系統返回計算機上安裝的處理器的型號。 15

%PROCESSOR_REVISION% (processor_revision)系統返回處理器的版本號。 4f02

%PROMPT% (prompt)本地 返回當前解釋程式的命令提示符設定。由 Cmd.exe 生成。$P$G

%RANDOM% (random)系統返回 0 到 32767 之間的任意十進位制數字。由 Cmd.exe 生成。 30580

%SYSTEMDRIVE% (systemdrive)系統返回包含 Windows server operating system 根目錄(即系統根目錄)的驅動器。 C:

%SYSTEMROOT% (systemroot)系統返回 Windows server operating system 根目錄的位置。C:WINDOWS

%TEMP%(temp) C:DOCUME~1ADMINI~1LOCALS~1Temp和 %TMP% (tmp)C:DOCUME~1ADMINI~1LOCALS~1Temp系統和使用者返回對當前登入使用者可用的應用程式所使用的預設臨時目錄。有些應用程式需要 TEMP,而其他應用程式則需要 TMP。

%TIME% 系統 返回當前時間。使用與 time /t 命令相同的格式。由 Cmd.exe 生成。有關 time 命令的詳細資訊,請參閱 Time。

%USERDOMAIN% (userdomain)本地返回包含使用者帳戶的域的名稱。 xxxx

%USERNAME% (username)本地返回當前登入的使用者的名稱。 Administrator

%USERPROFILE% (userprofile)本地返回當前使用者的配置檔案的位置。 C:Documents and SettingsAdministrator

%WINDIR%(windir) 系統 返回作業系統目錄的位置。 C:WINDOWS


這麼多系統變數,我們如何知道他的值是什麼呢?

在CMD裡輸入 echo %WINDIR%

windir變數名,不是隨便亂輸的!

這樣就能顯示一個變數的值了!

舉個實際例子,比如我們要複製檔案到當前帳號的啟動目錄裡就可以這樣

copy d:1.bat "%USERPROFILE%「開始」選單程式啟動"

%USERNAME% 本地 返回當前登入的使用者的名稱。 注意有空格的目錄要用引號引起來

另外還有一些系統變數,他們是代表一個意思,或者一個操作!

他們分別是%0 %1 %2 %3 %4 %5 ......一直到%9 還有一個%*

%0 這個有點特殊,有幾層意思,先講%1-%9的意思.

%1 返回批處理的第一個引數

%2 返回批處理的第二個引數

%3-%9依此推類

反回批處理引數?到底怎麼個返回法?

我們看這個例子,把下面的程式碼儲存為test.BAT然後放到C盤下

@echo off

echo %1 %2 %3 %4

echo %1

echo %2

echo %3

echo %4

進入CMD,輸入cd c:

然後輸入 test.bat 我是第一個引數 我是第二個引數 我是第三個引數 我是第四個引數

注意中間的空額,我們會看到這樣的結果:

我是第一個引數 我是第二個引數 我是第三個引數 我是第四個引數

我是第一個引數

我是第二個引數

我是第三個引數

我是第四個引數

對比下程式碼,%1就是我是第一個引數 %2就是我是第二個引數

怎麼樣理解了吧!

這些%1和%9可以讓批處理也能帶引數執行,大大提高批處理功能!

還有一個%* 他是什麼呢?他的作用不是很大,只是返回引數而已,不過他是一次返回全部引數的值,不用在輸入%1 %2來確定一個個的

例子

@echo off

echo %*

同樣儲存為test.bat 放到C盤

進入CMD,輸入cd c:

然後輸入 test.bat 我是第一個引數 我是第二個引數 我是第三個引數 我是第四個引數

可以看到他一次把全部引數都顯示出來了

好現在開始講那個比較特殊的%0

%0 這個不是返回引數的值了,他有兩層意思!

第一層意思:返回批處理所在絕對路徑

例子:

@echo off

echo %0

pause

儲存為test.BAT放在桌面執行,會顯示如下結果

"C:Documents and SettingsAdministrator桌面 est.bat"

他把當前批處理執行的所在路經列印出來了,這就是返回批處理所在絕對路徑的意思

第二層意思:無限迴圈執行BAT

例子:

@echo off

net user

%0

儲存為BAT執行,他就會無限迴圈執行net user這條命令,直到你手動停止.

以上就是批處理中的一些系統變數,另外還有一些變數,他們也表示一些功能,

FOR命令中的那些就是,FOR變數已經說過,就不講了.

自定義變數

故名思意,自定義變數就是由我們來給他賦予值的變數要使用自定義變數就得使用set命令了,看例子.

@echo off

set var=我是值

echo %var%

pause

儲存為BAT執行,我們會看到CMD裡返回一個 "我是值"

var為變數名,=號右變的是要給變數的值

這就是最簡單的一種設定變數的方法了

如果我們想讓使用者手工輸入變數的值,而不是在程式碼裡指定,可以用用set命令的/p引數

例子:

@echo off

set /p var=請輸入變數的值

echo %var%

pause

var變數名 =號右邊的是提示語,不是變數的值

變數的值由我們執行後自己用鍵盤輸入!

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10876701/viewspace-971236/,如需轉載,請註明出處,否則將追究法律責任。

相關文章