-------siwuxie095
批處理中的變量分為兩類:系統變量 和 自定義變量
一、系統變量
系統變量的值由系統將其根據事先定義的條件自動賦值,即
這些變量系統已經給它們定義了值,不需要給它賦值,只需
要調用即可。如下:
%ALLUSERSPROFILE% |
本地 |
返回 "所有用戶" 配置文件的位置 |
%APPDATA% |
本地 |
返回默認情況下應用程序存儲數據的位置 |
%CD% |
本地 |
返回當前目錄字符串。也就是獲得當前路徑,並將其轉換為字符串 |
%CMDCMDLINE% |
本地 |
返回用來啟動當前的 Cmd.exe 的准確命令行 |
%CMDEXTVERSION% |
系統 |
返回當前的 "命令處理程序擴展" 的版本號 |
%COMPUTERNAME% |
系統 |
返回計算機名稱 |
%COMSPEC% |
系統 |
返回命令行解釋器可執行程序的准確路徑。也就是返回 cmd.exe 的路徑,一般在 C:\WINDOWS\system32\cmd.exe |
%DATE% |
系統 |
返回當前日期字符串。和使用 date/t 效果一樣 |
%ERRORLEVEL% |
系統 |
返回上一條命令的錯誤代碼。通常用 0 表示正確,非0 表示錯誤 |
%HOMEDRIVE% |
系統 |
返回連接到用戶主目錄的本地工作站驅動器號。基於主目錄值而設置。用戶主目錄是在 "本地用戶和組" 中指定的 |
%HOMEPATH% |
系統 |
返回用戶主目錄的完整路徑。基於主目錄值而設置。用戶主目錄是在 "本地用戶和組" 中指定的 |
%HOMESHARE% |
系統 |
返回用戶的共享目錄的網絡路徑。基於主目錄值而設置。用戶主目錄是在 "本地用戶和組" 中指定的 |
%LOGONSERVER% |
本地 |
返回驗證當前登錄會話的域控制器的名稱 |
%NUMBER_OF_PROCESSORS% |
系統 |
指定安裝在計算機上的處理器數目(所有 CPU 的總核心數) |
%OS% |
系統 |
返回操作系統名稱 |
%PATH% |
系統 |
指定可執行文件的搜索路徑。也就是在這些目錄下的可執行文件 (不僅僅是.exe,可以用 echo %PATHEXT% 查看哪些屬於可執行文件。)可以直接在開始-->運行里直接執行,當然也可以在命令提示符、批處理中直接執行。例如記事本文件位於 C:\WINDOWS\NOTEPAD.EXE ,那么我們點擊 "開始-->運行,輸入 NOTEPAD " 就可以打開記事本了。或者我們打開 CMD 窗口 ,直接輸入 NOTEPAD 也可以打開記事本 |
%PATHEXT% |
系統 |
返回操作系統認為可執行的文件擴展名的列表 |
%PROCESSOR_ARCHITECTURE% |
系統 |
返回處理器的芯片體系結構。返回值為 x86 或 IA64 或 RISC。這些都是常見的架構 ,或者稱作指令集。 Windows 操作系統都是基於 x86 架構開發的,國產CPU 不是采用 x86 指令集 ,所以無法運行 Windows |
%PROCESSOR_IDENTFIER% |
系統 |
返回處理器說明 |
%PROCESSOR_LEVEL% |
系統 |
返回計算機上安裝的處理器型號 |
%PROCESSOR_REVISION% |
|
返回處理器版本號 |
%PROMPT% |
本地 |
返回當前解釋程序的命令提示符設置。由 Cmd.exe 生成 |
%RANDOM% |
系統 |
返回 0 到 32767 之間的任意十進制數字。由 Cmd.exe 生成 |
%SYSTEMDRIVE% |
系統 |
返回包含Windows server operation system根目錄(即系統根目錄)的驅動器 |
%SYSTEMROOT% |
系統 |
返回 Windows server operation system 根目錄位置 |
%TEMP% 和 %TMP% |
系統 用戶 |
返回對當前登錄用戶可用的應用程序所使用的默認臨時目錄。有些應用程序需要 TEMP,而其他應用程序則需要 TMP |
%TIME% |
系統 |
返回當前時間字符串。使用與 time /t 命令相同的格式 |
%USERDOMAIN% |
本地 |
返回包含用戶賬戶的域的名稱 |
%USERNAME% |
本地 |
返回當前登錄的用戶的名稱 |
%USERPROFILE% |
本地 |
返回當前用戶的配置文件的位置 |
%WINDIR% |
系統 |
返回操作系統目錄的位置 |
win10系統,登錄用戶:siwuxie095,testx.bat保存在桌面,測試如下:
1、%ALLUSERSPROFILE%
2、%APPDATA%
3、%CD%
4、%CMDCMDLINE%
5、%CMDEXTVERSION%
6、%COMPUTERNAME%
7、%COMSPEC%
8、%DATE%
9、%ERRORLEVEL%
10、%HOMEDRIVE%
11、%HOMEPATH%
12、%HOMESHARE%
13、%LOGONSERVER%
14、%NUMBER_OF_PROCESSORS%
15、%OS%
16、%PATH%
17、%PATHEXT%
18、%PROCESSOR_ARCHITECTURE%
19、%PROCESSOR_IDENTFIER%
20、%PROCESSOR_LEVEL%
21、%PROCESSOR_REVISION%
22、%PROMPT%
23、%RANDOM%
24、%SYSTEMDRIVE%
25、%SYSTEMROOT%
26、%TEMP%
27、%TMP%
28、%TIME%
29、%USERDOMAIN%
30、%USERNAME%
31、%USERPROFILE%
32、%WINDIR%
應用:
如:利用 %PROCESSOR_ARCHITECTURE% 判斷當前計算機是幾位的
@echo off if "%PROCESSOR_ARCHITECTURE:~0,3%" equ "x86" (echo 32位計算機) else echo 64 位計算機 pause>nul |
sublime中:
運行一覽:
如:利用系統變量實現清理系統垃圾
@echo off title 清除 Windows 10 系統垃圾 del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %systemdrive%\*.log ::幫助的臨時文件 del /f /s /q %systemdrive%\*.gid ::丟失簇的恢復文件 del /f /s /q %systemdrive%\*.chk ::舊備份文件 del /f /s /q %systemdrive%\*.old del /f /s /q %systemdrive%\recycled\*.* ::臨時備份文件 del /f /s /q %windir%\*.bak ::刪除上網預讀信息 del /f /s /q %windir%\prefetch\*.* ::直接刪除 C:\Windows\temp 文件夾 ,並新建 temp 文件夾。 rd /s /q %windir%\temp & md %windir%\temp ::刪除用戶名下的 cookies 文件夾內容。 del /f /q "%userprofile%\cookies\*.*" ::刪除最近瀏覽文件的快捷方式 del /f /q "%userprofile%\recent\*.*" ::清除用戶臨時頁面文件 del /f /s /q "%userprofile%\Local Settings\TemporaryInternetFiles\*.*" ::清除用戶臨時文件 del /f /s /q "%userprofile%\Local Settings\Temp\*.*" del /f /s /q "f:\Temporary Internet Files\*.*" del /f /s /q "%userprofile%\recent\*.*" ::刪除 C 盤安裝信息文件 del /f /s /q "C:\Program Files\Installshield InstallationInformation\*.*" ::刪除升級補丁信息 del /f /s /q "C:\WINDOWS\SoftwareDistribution\Download\*.*" ::刪除歷史記錄 rd /s /q "%userprofile%\Local Settings\History" dir %SystemRoot%\$*$ /ad/b >%SystemRoot%\vTmp.txt for /f %%a in (%SystemRoot%\vTmp.txt) do rd /s /q "%SystemRoot%\%%a" echo 清除系統垃圾完成 !& pause |
sublime中:
運行一覽:
如:用%RANDOM% 獲取隨機數
注:%random% 可以隨機獲得 0 到 32767 之間的任意
一個十進制數字(32767 用二進制表示為 15 個 1)
@echo off echo %random% pause |
sublime中:
運行一覽:
注意,下面的程序只能獲得一個隨機數
(即每次執行獲得10個一樣的隨機數):
@echo off for /l %%i in (1,1,10) do echo %random% pause |
sublime中:
運行一覽:
必須使用延遲變量:
@echo off setlocal enabledelayedexpansion for /l %%i in (1,1,10) do echo !random! pause |
sublime中:
運行一覽:
產生指定區間 [min,max] 里的隨機數,采用格式:
%random%%%(max-min+1)+min
如:產生 1 到 10 的隨機數字
@echo off set /a num=%random%%%10+1 echo %num% pause |
sublime中:
運行一覽:
如:在當前目錄下的 test.txt 文本文件中隨機讀取一行數據
(test.txt 以某軟件的使用說明作測試)
@echo off setlocal enabledelayedexpansion for /f "tokens=*" %%i in (test.txt) do (set /a h+=1 & set r!h!=%%i) set /a s=%random% %% h+1 echo !r%s%! pause |
或
@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION FOR /F "TOKENS=*" %%i IN (TEST.TXT) DO (SET /A h+=1 & SET r!h!=%%i) SET /A s=%RANDOM% %% h+1 ECHO !r%s%! PAUSE |
sublime中:
或
運行一覽:
隨機取值程序:
@echo off mode con cols=84 lines=36 ::設置窗口大小 title 隨機取值程序 ::設置窗口標題 color 9f ::設置窗口顏色 set num=0 ::取值次數計數器歸零 :begin set k= echo. & echo. echo %k% 隨機取值程序 echo. & echo. set /p a=%k%請輸入目標數字: set /p min=%k%請輸入取值范圍最小值: set /p max=%k%請輸入取值范圍最大值: set /a count=max-min+1 ::計算取值范圍大小 if %max% lss %min% ( echo. echo %k%取值范圍最大值小於最小值,輸入錯誤,請重新輸入。 pause > nul cls goto begin ) echo. echo %k%您輸入的數字是 %a% echo %k%取值范圍是 [ %min% , %max% ] if %a% lss %min% goto tuichu if %a% gtr %max% goto tuichu ::如果目標數字在取值范圍之外,返回並重新輸入 echo. & echo. echo %k%按任意鍵開始隨機取值 echo. pause > nul echo ---------------------------------------------------------------------------------- :xun set /a b=%RANDOM%%%(max-min+1)+min ::在取值范圍內隨機取值 set /a panduan=%num%%%10 if %panduan% == 0 echo. ::每輸出 10 個數字,就回車換行 set /a num+=1 ::計數器加 1 set c= %b% set /p=%c:~-7% <nul if %b% == %a% ( echo. & echo. & echo. echo ---------------------------------------------------------------------------------- echo %k%本次從 [%min% , %max%] 共%count%個數字中隨機取值%num%次,出現了目標數字%a% echo. & echo. echo 按任意鍵退出 pause > nul exit ) else (goto xun) :tuichu echo.& echo. echo %k%目標數字在取值范圍之外,無法取值,請重新輸入 pause > nul cls goto begin |
sublime中:
運行一覽:
【made by siwuxie095】