windows 基礎:
匹配文件時 * 匹配任意長度,? 匹配單個字符
系統變量 %變量名%
. 當前目錄
.. 上級目錄
當目錄或文件有空格時用 "" 來界定
批處理不區分大小寫,值可能區分
批處理:
簡單命令:echo,pause,cls,find,date,time,shutdown,systeminfo,tree,ping,tasklist,calc,mstsc,mspaint
常用操作:
>nul 正常信息輸出到空設備
2>nul 錯誤信息輸出到空設備
echo. 輸出一個空行
關閉命令回顯 echo off ,這樣就不需要每個命令前都加入 @
查看幫助 command /?
%0 重複執行
常用符號解釋:
| 管道操作符,前面的輸出做爲後面的輸入
& 執行完上一條命令後,接着執行下一條命令用同一命令 如 dir c:\ & d:\
@ 關閉當前命令的回顯,只顯示處理結果,而不顯示執行的命令
> 命令的輸出結果重定向到後面的設備
>> 輸出結果追加到後面的設備
< 將後面指定設備的內容,作爲前面命令的輸入內容
^ 轉義符號
: 標籤 使用 goto 跳轉到這個標籤 :標籤 goto 標籤名
, 可以當成命令與參數之間的空格
; 兩個相同的命令時可省略命令名如 dir c:\;d:\
邏輯符號
&& 上一命令執行成功才執行下一命令,是兩個命令
|| 上一命令執行成功就不執行下一命令
文本處理
type 顯示文本文件中的內容
more 分頁處理
for /f
目錄操作
cd,dir
文檔管理
del
/s 從所有子目錄中刪除指定文件
/f 強制刪除只讀文件
/q 安靜模式,不要求確認
set 不加參數爲查看所有變量
變量:
系統變量,自定義變量
%CD% : 當前目錄
%errorlevel% : 返回上一條命令的錯誤代碼
%HOMEDRIVE% : 連接到用戶主目錄的本地工作站的驅動器號,在本地用戶和組中指定
%PATH%
%WINDIR% : 操作系統目錄位置 C:\WINDOWS
%RANDOM% : 返回 0 到 32767 之間的任意十進制數字
%SYSTEMROOT% : 返回操作系統 根目錄位置 C:\WINDOWS
%USERNAME% : 當前登錄用戶名
%USERDOMAIN% : 用戶帳戶域名稱
%USERPROFILE% : 用戶配置文件位置
%1~%9 接收的參數 %* 全部參數
%0
返回批處理所在的絕對路徑
無限循環,相當於把當前批處理再次執行
自定義變量
set name=值
/p name=提示語句 由用戶輸入變量值
/a name=運算後的值
例 : set /a name=1+1,name=1 "&" 1
替換變量值
set var=%name: =% 把 name 變量中空格替換爲沒有
字符串截取
set var=%name:~1,2% 把 name 變量中 從第1個,截取 2 個
set var=%name:~3% 從第 3 個開始,後面的全部截取
set var=%name:~-3% 從後面截取 3 個字符
延遲變量(延遲環境變量擴展(解釋執行的時候替換變量成值))
bat 是整條命令讀取執行的(重要),提前會把變量替換成值
例1:
set var=test
for /l %%i in (1,1,5) do (
set var=%%i
echo !var!
)
pause
這個將會打出 5 個 test ,而不是預期的 12345
例2:
set var=text & echo %test%
解決問題:
setlocal enabledelayedexpansion
使用 !name! 來使用變量
分支語句
if
/i 字符串時區分大小寫
if defined 變量名(注:這個變量名可以是變量) () else ()
if %var% equ,neq,lss,leq,gtr,geq 值
if %errorlevel% == 0 (
command
) else (
command
)
if [not] exist filename command
循環語句 注: %%i 在 cmd 中只需要一個 %
for %%i in (set) do command ::set 支持通配符
/d 僅對目錄有效果
/r 路徑 遞歸,不指定路徑時爲當前路徑根目錄
/l 迭代枚舉
/f 文本解析
for /f "擴展參數" %%i in (filenameset) do command
eol : 排除以什麼開頭的行
tokens : 找出哪些列 (注:從 1 開始 )
delims : 以什麼做爲分隔符
for /f 參數示例:
默認 for /f "eol=; tokens=1 delims= "
for /f "eol=; tokens=1 delims= " %%i in (test.txt) do echo %%i
for /f "delims=" %%i in ('net user') do echo %%i
for /f "tokens=1,2 delims= " %%i in ('net user') do echo %%a %%b
for /f "tokens=* delims= " %%i in ('net user') do echo %%i
for /f "tokens=1-3 delims= " %%i in ('net user') do echo %%a %%b %%c
for 變量
1.注:text.txt 中文本有引號 %~i 消除引號
消除規則:
"2322" -> 2322
"2322 -> 2322
23"22 -> 23"22
2322" -> 2322"
for /f "delims=" %%i in (test.txt) do echo %%~i
2. for /f "delims=" %%i in ('dir /b') do echo %%~fi 使 %%i 成爲完整路徑
...
3. for /f "delims=" %%i in ("net.exe") do echo %%~$PATH:i 在 path 下搜索 net.exe
windows 批處理
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.