-------siwuxie095
批處理中的變量分為兩類:系統(tǒng)變量 和 自定義變量
一、系統(tǒng)變量
系統(tǒng)變量的值由系統(tǒng)將其根據(jù)事先定義的條件自動賦值,即
這些變量系統(tǒng)已經(jīng)給它們定義了值,不需要給它賦值,只需
要調(diào)用即可。如下:
%ALLUSERSPROFILE% | 本地 | 返回 "所有用戶" 配置文件的位置 |
%APPDATA% | 本地 | 返回默認情況下應(yīng)用程序存儲數(shù)據(jù)的位置 |
%CD% | 本地 | 返回當前目錄字符串。也就是獲得當前路徑,并將其轉(zhuǎn)換為字符串 |
%CMDCMDLINE% | 本地 | 返回用來啟動當前的 Cmd.exe 的準確命令行 |
%CMDEXTVERSION% | 系統(tǒng) | 返回當前的 "命令處理程序擴展" 的版本號 |
%COMPUTERNAME% | 系統(tǒng) | 返回計算機名稱 |
%COMSPEC% | 系統(tǒng) | 返回命令行解釋器可執(zhí)行程序的準確路徑。也就是返回 cmd.exe 的路徑,一般在 C:\WINDOWS\system32\cmd.exe |
%DATE% | 系統(tǒng) | 返回當前日期字符串。和使用 date/t 效果一樣 |
%ERRORLEVEL% | 系統(tǒng) | 返回上一條命令的錯誤代碼。通常用 0 表示正確,非0 表示錯誤 |
%HOMEDRIVE% | 系統(tǒng) | 返回連接到用戶主目錄的本地工作站驅(qū)動器號?;谥髂夸浿刀O(shè)置。用戶主目錄是在 "本地用戶和組" 中指定的 |
%HOMEPATH% | 系統(tǒng) | 返回用戶主目錄的完整路徑?;谥髂夸浿刀O(shè)置。用戶主目錄是在 "本地用戶和組" 中指定的 |
%HOMESHARE% | 系統(tǒng) | 返回用戶的共享目錄的網(wǎng)絡(luò)路徑?;谥髂夸浿刀O(shè)置。用戶主目錄是在 "本地用戶和組" 中指定的 |
%LOGONSERVER% | 本地 | 返回驗證當前登錄會話的域控制器的名稱 |
%NUMBER_OF_PROCESSORS% | 系統(tǒng) | 指定安裝在計算機上的處理器數(shù)目(所有 CPU 的總核心數(shù)) |
%OS% | 系統(tǒng) | 返回操作系統(tǒng)名稱 |
%PATH% | 系統(tǒng) | 指定可執(zhí)行文件的搜索路徑。也就是在這些目錄下的可執(zhí)行文件 (不僅僅是.exe,可以用 echo %PATHEXT% 查看哪些屬于可執(zhí)行文件。)可以直接在開始-->運行里直接執(zhí)行,當然也可以在命令提示符、批處理中直接執(zhí)行。例如記事本文件位于 C:\WINDOWS\NOTEPAD.EXE ,那么我們點擊 "開始-->運行,輸入 NOTEPAD " 就可以打開記事本了?;蛘呶覀兇蜷_ CMD 窗口 ,直接輸入 NOTEPAD 也可以打開記事本 |
%PATHEXT% | 系統(tǒng) | 返回操作系統(tǒng)認為可執(zhí)行的文件擴展名的列表 |
%PROCESSOR_ARCHITECTURE% | 系統(tǒng) | 返回處理器的芯片體系結(jié)構(gòu)。返回值為 x86 或 IA64 或 RISC。這些都是常見的架構(gòu) ,或者稱作指令集。 Windows 操作系統(tǒng)都是基于 x86 架構(gòu)開發(fā)的,國產(chǎn)CPU 不是采用 x86 指令集 ,所以無法運行 Windows |
%PROCESSOR_IDENTFIER% | 系統(tǒng) | 返回處理器說明 |
%PROCESSOR_LEVEL% | 系統(tǒng) | 返回計算機上安裝的處理器型號 |
%PROCESSOR_REVISION% |
| 返回處理器版本號 |
%PROMPT% | 本地 | 返回當前解釋程序的命令提示符設(shè)置。由 Cmd.exe 生成 |
%RANDOM% | 系統(tǒng) | 返回 0 到 32767 之間的任意十進制數(shù)字。由 Cmd.exe 生成 |
%SYSTEMDRIVE% | 系統(tǒng) | 返回包含Windows server operation system根目錄(即系統(tǒng)根目錄)的驅(qū)動器 |
%SYSTEMROOT% | 系統(tǒng) | 返回 Windows server operation system 根目錄位置 |
%TEMP% 和 %TMP% | 系統(tǒng) 用戶 | 返回對當前登錄用戶可用的應(yīng)用程序所使用的默認臨時目錄。有些應(yīng)用程序需要 TEMP,而其他應(yīng)用程序則需要 TMP |
%TIME% | 系統(tǒng) | 返回當前時間字符串。使用與 time /t 命令相同的格式 |
%USERDOMAIN% | 本地 | 返回包含用戶賬戶的域的名稱 |
%USERNAME% | 本地 | 返回當前登錄的用戶的名稱 |
%USERPROFILE% | 本地 | 返回當前用戶的配置文件的位置 |
%WINDIR% | 系統(tǒng) | 返回操作系統(tǒng)目錄的位置 |
win10系統(tǒng),登錄用戶: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%
應(yīng)用:
如:利用 %PROCESSOR_ARCHITECTURE% 判斷當前計算機是幾位的
@echo off if "%PROCESSOR_ARCHITECTURE:~0,3%" equ "x86" (echo 32位計算機) else echo 64 位計算機 pause>nul |
sublime中:
運行一覽:
如:利用系統(tǒng)變量實現(xiàn)清理系統(tǒng)垃圾
@echo off title 清除 Windows 10 系統(tǒng)垃圾 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 ::刪除上網(wǎng)預讀信息 del /f /s /q %windir%\prefetch\*.* ::直接刪除 C:\Windows\temp 文件夾 ,并新建 temp 文件夾。 rd /s /q %windir%\temp & md %windir%\temp ::刪除用戶名下的 cookies 文件夾內(nèi)容。 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 清除系統(tǒng)垃圾完成 !& pause |
sublime中:
運行一覽:
如:用%RANDOM% 獲取隨機數(shù)
注:%random% 可以隨機獲得 0 到 32767 之間的任意
一個十進制數(shù)字(32767 用二進制表示為 15 個 1)
@echo off echo %random% pause |
sublime中:
運行一覽:
注意,下面的程序只能獲得一個隨機數(shù)
(即每次執(zhí)行獲得10個一樣的隨機數(shù)):
@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中:
運行一覽:
產(chǎn)生指定區(qū)間 [min,max] 里的隨機數(shù),采用格式:
%random%%%(max-min+1)+min
如:產(chǎn)生 1 到 10 的隨機數(shù)字
@echo off set /a num=%random%%%10+1 echo %num% pause |
sublime中:
運行一覽:
如:在當前目錄下的 test.txt 文本文件中隨機讀取一行數(shù)據(jù)
(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 ::設(shè)置窗口大小 title 隨機取值程序 ::設(shè)置窗口標題 color 9f ::設(shè)置窗口顏色 set num=0 ::取值次數(shù)計數(shù)器歸零 :begin set k= echo. & echo. echo %k% 隨機取值程序 echo. & echo. set /p a=%k%請輸入目標數(shù)字: 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%您輸入的數(shù)字是 %a% echo %k%取值范圍是 [ %min% , %max% ] if %a% lss %min% goto tuichu if %a% gtr %max% goto tuichu ::如果目標數(shù)字在取值范圍之外,返回并重新輸入 echo. & echo. echo %k%按任意鍵開始隨機取值 echo. pause > nul echo ---------------------------------------------------------------------------------- :xun set /a b=%RANDOM%%%(max-min+1)+min ::在取值范圍內(nèi)隨機取值 set /a panduan=%num%%%10 if %panduan% == 0 echo. ::每輸出 10 個數(shù)字,就回車換行 set /a num+=1 ::計數(shù)器加 1 set c= %b% set /p=%c:~-7% <nul if %b% == %a% ( echo. & echo. & echo. echo ---------------------------------------------------------------------------------- echo %k%本次從 [%min% , %max%] 共%count%個數(shù)字中隨機取值%num%次,出現(xiàn)了目標數(shù)字%a% echo. & echo. echo 按任意鍵退出 pause > nul exit ) else (goto xun) :tuichu echo.& echo. echo %k%目標數(shù)字在取值范圍之外,無法取值,請重新輸入 pause > nul cls goto begin |
sublime中:
運行一覽:
【made by siwuxie095】
聯(lián)系客服