1、不想使得腳本里面的語句都輸出來,可以使用@符號,這個符號所在的語句可以隱去這一句的輸出,若想整個腳本都不輸出語句,則可以再文件的最開頭使用這一句:@echo off
,如果在使用了這一句的前提下,又想是某一句顯示出來,可以這樣寫:
@echo on
echo 3
@echo off
這樣echo 3就可以將命令顯示出來
2、對變量的處理
(1)對變量的設置
給變量設置字符串值:
set var1=abcd
(2)對變量設置數字值,這個值是int類型的
set /a var2=10
這樣把var2這個變量設置成了數字10
(3)從輸入設置變量的值
set /p var3="input a number"
(4)對變量的引用
將var2的值賦值給var4
set var4=%var2%
(5)對變量的分割
一個典型的對變量的分割例子就是log文件的名稱需根據時間來建立相應的文件,一般這麼寫:
set tsp="%time:~0,1%"
if %tsp%==" " (set date_time=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%) else (
set date_time=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
)
首先來看一看date和time變量是什麼
echo %date%
2018/11/28 週三
echo %time%
16:40:43.32
這樣就好辦事了,首先看一下date_time=%date:~0,4%%date:~5,2%%date:~8,2%
的意思,%date:~m,n%表示取從date變量的第m位(從第0位開始計數)開始之後的n位字符,在這裏就是取這樣這句話的結果就是取“2018/11/28 週三”的“2018”。
那麼tsp是幹嘛的?這個變量是測試是上午還是下午的,如果是上午,那麼時間的時這裏就只有一位,最前面是空格,而不是默認爲0,所以需要判斷,然後手動加上0這一位。
再舉一些變量分割的例子:
輸入的命令 結果 效果
echo %var% 1234567890 顯示所有
echo %var:~4% 567890 從第4個字符以後開始顯示
echo %var:~4,3% 567 從第4個字符以後開始顯示,並只顯示前3個
echo %var:~-4% 7890 從倒數第4個字符開始顯示
echo %var:~-4,3% 789 從倒數第4個字符開始顯示,並只顯示前3個
echo %var:~4,-2% 5678 從第4個字符以後開始顯示,顯示到還剩2個爲止
echo %var:~0,3% 123 從頭開始顯示,並只顯示前3個字符
echo %var:~0,-3% 1234567 從頭開始顯示,顯示到還剩3個字符爲止
set var2=%var:ld=ms and bugs% 將var變量中所有的ld換成ms and bugs,輸出結果賦值給var2
利用以上的規則進行一些字符串操作:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set a= abcd
::去除左邊的空格
:left
if "%a:~0,1%"==" " set a=%a:~1% && goto left
echo %a%
::去除字符串所有的空格
set a=abcd efg
set a=%a: =%
echo %a%E
::去除字符串右邊的空格
set a=abcdefg
:right
if "%a:~-1%"==" " (set a=%a:~0,-1%
echo %a%
goto right
)
echo %a%A
3、程序的控制語句
(1)if語句
首先if判斷是否兩個數值相等,數值比較有“等於”、“大於”、“大於等於”、“小於”、“小於等於”、“不等於”六種,這六種分別對應的寫法:
EQU - 等於
NEQ - 不等於
LSS - 小於
LEQ - 小於或等於
GTR - 大於
GEQ - 大於或等於
這些東西可以通過輸入命令 if /?查看到。
當然等於還有一種寫法就是“==”,例子:
@echo off
set /a a=1
set /a b=2
if %a% lss %b% echo aaa
if 5 gtr 4 echo bbbbb
if 3==3 echo ccccc
pause
if還有一些比較特殊的用法,比如文件是否存在和變量是否存在。例子:
if exist aaa.txt echo exist
if defined a echo %a%
@echo off
set /a a=1
if %a%==2 echo 3
pause
在這裏一定要注意,if判斷條件之後的語句一定要在同一行,否則就會報錯,如果想寫多行,可以使用圓括號,比如:
if %a%=="haha haha" (
echo 3
)
其中“(”一定要在if的同一行
(2)for語句
通過輸入命令for /?可以大致瞭解到for語句的集中使用方法
1、類似c語言的循環
@echo off
for /l %%i in (1,1,50) do echo %%i
pause
表示i在1到50每隔1這個序列裏面取值,然後輸出i,在這裏如果寫的是腳本,則要使用%%i,而不是%i,如果直接寫在命令行裏面,則 使用%i,另外這裏的變量名必須使用單個字母的變量,一定不能有多個字母,否則會報錯。
這段語句就是輸出1到50.
2、遍歷文件
@echo off
for %%i in (*) do echo %%i
pause
在這裏會遍歷所有當前目錄下面的文件,注意不包含目錄,目錄不會輸出。
如果想輸出當前文件夾下面所有的目錄:
@echo off
for /d %%i in (*) do echo %%i
pause
跳轉語句
定義一個標識,然後跳轉到這個標識
:ok
goto ok