bat 批處理變數

2022-07-22 16:21:11 字數 3860 閱讀 4064

@echo off

setlocal enabledelayedexpansion

d:rem 更改d:\bat為當前目錄

cd /d bat

rem 變數使用

set /a a=1+2

echo %a%echo %cd%echo %date%

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

echo %var%rem find命令運用

echo

111 >test.txt

echo

222 >>test.txt

type test.txt|find "

111"

find /v "

111"

test.txt

del test.txt

rem 檢視檔案內容

type

1.txt

dir |find "

txt"

rem ()可以將多行命令看作一行來執行

( echo

1echo 2)

rem if語句

if exist d:\bat type 1

.txt

echo "aa

"pause

1、系統變數:

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

date 命令的詳細資訊,請參閱 date。

%errorlevel% 系統 返回上一條命令的錯誤**。通常用非零值表示錯誤。

%homedrive% 系統 返回連線到使用者主目錄的本地工作站驅動器號。基於主目錄值而設定。用

戶主目錄是在「本地使用者和組」中指定的。

%homepath% 系統 返回使用者主目錄的完整路徑。基於主目錄值而設定。使用者主目錄是在「本

地使用者和組」中指定的。

%homeshare% 系統 返回使用者的共享主目錄的網路路徑。基於主目錄值而設定。使用者主目錄是

在「本地使用者和組」中指定的。

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

%number_of_processors% 系統 指定安裝在計算機上的處理器的數目。

%os% 系統 返回作業系統名稱。windows 2000 顯示其作業系統為 windows_nt。

%path% 系統 指定可執行檔案的搜尋路徑。

%pathext% 系統 返回作業系統認為可執行的副檔名的列表。

%processor_architecture% 系統 返回處理器的晶元體系結構。值:x86 或 ia64 基於

itanium

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

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

%processor_revision% 系統 返回處理器的版本號。

%prompt% 本地 返回當前解釋程式的命令提示符設定。由 cmd.exe 生成。

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

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

%systemroot% 系統 返回 windows server operating system 根目錄的位置。

%temp% 和 %tmp% 系統和使用者 返回對當前登入使用者可用的應用程式所使用的預設臨時目錄。

有些應用程式需要 temp,而其他應用程式則需要 tmp。

%time% 系統 返回當前時間。使用與 time /t 命令相同的格式。由 cmd.exe 生成。有關

time 命令的詳細資訊,請參閱 time。

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

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

%userprofile% 本地 返回當前使用者的配置檔案的位置。

%windir% 系統 返回作業系統目錄的位置。

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

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

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

2、指向命令時輸入變數

他們分別是%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來確定乙個個的

例子@echo off

echo %*

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

進入cmd,輸入cd c:\

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

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

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

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

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

例子:

@echo off

echo %0

pause

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

"c:\documents and settings\administrator\桌面\test.bat"

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

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

例子:@echo off

net user

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

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

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

3、自定義變數

故名思意,自定義變數就是由我們來給他賦予值的變數

要使用自定義變數就得使用set命令了,看例子.

@echo off

set var=我是值

echo %var%

pause

儲存為bat執行,我們會看到cmd裡返回乙個 "我是值"

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

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

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

例子:@echo off

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

echo %var%

pause

var變數名 =號右邊的是提示語,不是變數的值變數的值由我們執行後自己用鍵盤輸入

bat批處理語法

echo 列印字串 注意 x不能寫跨行,因為bat預設每一行就是乙個完整的語句,相當於在c語言中每一行後面自動加個分號。echo on 對於這行之後的語句把語句和結果都全部列印。開始執行bat批處理的時候預設開啟。echo off 對於這行之後的語句不列印命令語句本身 注意轄域是這句話之後,不包括這...

BAT批處理指令碼

echo off 與 echo on 前者為關閉回顯,後者為開啟回顯 當不想批處理檔案中的命令一行一行在dos中顯示出來時 因為全部顯示出來的話看起來會變得很雜亂 可以使用 echo off,將其放於程式的最上方就行了。先不把回顯關閉,執行乙個小的bat檔案,為 echo off title a c...

bat批處理總結

cd 路徑名 進入某乙個路徑 cd 退回到當前路徑的根目錄 cd.退回到上一級目錄 c 跳轉到c盤根目錄,其他碟符一樣 輸入字元時按tab鍵可以補全 dir 列出當前路徑下所有的檔案及資料夾列表 start cmd 再開啟乙個新的cmd視窗 可以繼承父cmd視窗的變數資訊 exit 退出當前的cmd...