批處理中的變量和參數(一)


-------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】

   

   

   

   

   

   

   

   

   

   

   

   

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM