腳本其實很簡單-windows配置覈查程序(2)

bat腳本是什麼?

首先講講什麼是命令行,在windows操做系統中,點擊左下角的win圖標,直接輸入cmd搜索,左鍵點擊進入命令行模式(或按鍵盤上的win鍵+r直接調出來命令行窗口)。html

在windows下命令行中,咱們能夠執行各類命令,一般這些命令被稱爲dos命令,也是各個版本windows都會自帶的命令,因此不管在什麼條件下,只要有windows系統,就可使用dos命令。windows

bat腳本就是把一條條單獨的dos命令組合在一塊兒的多條dos命令集合的文件,後綴是.bat。工具

前期概要

本文是對第一篇文章補充的詳細解釋,包括命令詳解、bat腳本的格式說明。(在學習的過程當中,能夠在本身電腦的命令行中直接進行測試驗證)學習

除以前教程中的echo, set, rem, pause外,主要涉及到的dos命令或功能有:測試

for, wmic, 截取字符串, 延遲執行命令,比較操做,重定向ui

跳轉至第一篇文章 點擊這裏操作系統

源代碼以下(有刪減)

@echo off

rem 採集內存總容量
for /f "skip=1" %%i in ('wmic os get TotalVisibleMemorySize') do (
if %%i geq 0 set totalMem=%%i
)
set /a tmp=%totalMem%/1024
set totalMem=%tmp:~0,-3%.%tmp:~-3%G

echo 總內存容量:%totalMem%
echo -----------------------------------------
rem 設置2秒的延遲
ping 127.0.0.1 -n 2 > null

rem 採集磁盤信息
echo 磁盤信息(可用/總量)
wmic LOGICALDISK get DeviceID,FreeSpace,Size > tmp.txt
for /f "skip=1 tokens=1,2,3*" %%i in ('type tmp.txt') do (
set totalDisk=%%k
set freeDisk=%%j
set /a tmp1=!freeDisk:~0,-5!/1074
set /a tmp2=!totalDisk:~0,-5!/1074
set diskStr=%%i!tmp1:~0,-1!.!tmp1:~-1!G/!tmp2:~0,-1!.!tmp2:~-1!G
echo !diskStr!
)
del tmp.txt

命令詳解

  • for

功能概述:在命令行中輸出自定義字符串。(能夠理解爲dos命令的循環操做,可是有一些區別)命令行

參數說明:code

FOR /D %variable IN (set) DO command [command-parameters]htm

若是集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

檢查以 [drive:]path 爲根的目錄樹,指向每一個目錄中的FOR 語句。若是在 /R 後沒有指定目錄,則使用當前目錄。若是集僅爲一個單點(.)字符,則枚舉該目錄樹。

FOR /L %variable IN (start,step,end) DO command [command-parameters]

該集表示以增量形式從開始到結束的一個數字序列。

所以,(1,1,5) 將產生序列 1 2 3 4 5,(5,-1,1) 將產生序列 (5 4 3 2 1)。

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]

FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

FOR /F ["options"] %variable IN ('command') DO command [command-parameters

示例:

for /f "skip=1 tokens=1,2,3*" %%i in ('type tmp.txt') do @echo %%i,%%j,%%k

該語句將會將tmp.txt文件中的內容的前三個字段打印到命令行中,分隔符未指定,則是默認的空格等空白字符

  • wmic

功能概述:wmic能夠對window nt系統的WMI管理組件進行管理,功能包括但不限於計算機系統信息,內存信息,磁盤信息,硬件信息等。

參數及說明:
第一種方式:進入命令行,輸入wmic,便可進入wmic的命令行,輸入/?可查看全部的組件在WMI中的別名。如process(進程信息),os(操做系統信息),computersystem(計算機系統信息)等。。。

第二種方式:直接在cmd命令行輸入wmic+各類組件別名+執行的操做,好比wmic os get list brief

示例:

wmic os list brief

輸出結果

C:\Users\qjx>wmic os list brief
BuildNumber  Organization  RegisteredUser  SerialNumber             SystemDirectory      Version
17134                                      00329-00000-00003-AA288  C:\WINDOWS\system32  10.0.17134

總結:

wmic在windows操做系統中的應用不少,若是利用好這個工具,能夠用這個簡單的方式實現許多複雜的獲取計算機信息的功能。

  • 截取字符串

功能概述:
Windows操做系統級別,實現將字符串分割。

參數說明:
若是定義了一個變量,那麼正常的調用該變量的方式是在變量名兩邊加%符號調用,截取字符串是在調用的同時作了一些特殊的操做。

示例:

@echo off
set tmp=123456
echo %tmp%
echo %tmp:~0,3%
echo %tmp:~0,-2%
echo %tmp:~-1%

輸出

G:\Own\WeChat\course2>tmp2.bat
123456
123
1234
6
  • 延遲執行

功能概述:
延遲執行命令,好比3秒後執行某條命令,能夠用ping 127.0.0.1 -n 3 > null實現

示例

@echo off

echo 11111
ping 127.0.0.1 -n 3 > null
echo 22222

結果:

G:\Own\WeChat\course2>tmp2.bat
11111
22222
  • 比較操做

功能概述:
比較運算符(精度小於32位,若大於32爲則沒法比較):
EQU - 等於
NEQ - 不等於
LSS - 小於
LEQ - 小於或等於
GTR - 大於
GEQ - 大於或等於

@echo off

set num1=11
set num2=22
if %num1% equ %num2% echo "num1=num2"
if %num1% gtr %num2% echo "num1>num2"
if %num1% lss %num2% echo "num1<num2"

結果:

G:\Own\WeChat\course2>tmp2.bat
"num1<num2"
  • 重定向

功能概述:
重定向的做用是將命令行的輸出結果輸出到文件。

wmic LOGICALDISK get DeviceID,FreeSpace,Size > tmp.txt

總結:
若是程序產生的數據不須要持久化存儲,但又須要做爲接口傳遞給下一個程序,一般都會採用中間文件的處理方式。

以上就是對6個命令或功能的講解了,用好了這些搭配起來上次教程的4個基礎命令便可完成各類windows腳本的編寫。

若有錯誤請指出

相關文章
相關標籤/搜索