一、經常使用批處理內部命令html
命令的使用參數都可以經過command /? 來獲取,不在列舉,只根據本身的使用,及自定義的常見使用作些描述,僅供參考。linux
註釋: rem :: windows
rem dom
::ide
與rem不一樣的是,::後的字符行在執行時不會回顯,不管是否打開命令行回顯,由於命令解釋器不認爲他是一個有效的命令行,函數
另外,rem 能夠用於config.sys 文件中。操作系統
echo off 關閉回顯命令行
@ 將這個符號放在批處理文件中其它命令的前面,運行時將不顯示命令自己;與echo off 結合使用htm
@echo off 關閉此批處理文件中命令的全部回顯。對象
cls 清屏
dos下命令的參數使用時不區分大小寫
pause 暫停
errorlevel 運行退出狀態 0/1
title 批處理腳本執行時cmd的擡頭顯示
color 設置批處理運行環境顏色 示例:color 0a 黑色 淡綠色 [第一個爲背景,第二個則爲前景]
mode 配置系統設備 mode
mode con cols=113 line=15 & color 0a 此命令設置DOS窗口大小:15行,113列,背景色爲黑色,前景爲淡綠色
goto : [與if判斷語句結合使用]
if [not] string1 == string2 command
if [not] exist %path% command
if errorlevel 或 %errorlevel == 0 command
if /i %a% == %b% () else () ## /i 不區分大小寫 注意 else必定要與前括號在同一行,
如: if /i %a% == %b% (
) else ()
::判斷變量是否認義及定義變量是否爲空
if defined var command 或 if not "var"=="" command
判斷數字的符號
EQU - 等於 ;NEQ 不等於 ;LSS 小於 ;LEQ 小於或等於 ;GTR 大於 ; GEQ 大於或等於
find查找命令
參數不區分大小寫;操做對象爲文件,不可對目錄執行查找操做;查找匹配,打印包含有該字段的行。
/v 顯示全部未匹配的行
由於find查找的對象是文件,因此通常與 type結合使用,固然也能夠經過 將要查找的文件路徑放在文件中,
藉助for /f來實現一行一行讀取,再用find查找每一個文件。
call :label arguments
調用本文件內命令段,至關於子程序。被調用的命令以標籤:label開頭,以命令goto :eof[要有空格]結尾
call :label運行完 標籤,返回繼續運行,至關於調用函數的意思;但當遇到剛纔的定義的標籤 仍然會繼續執行;
使用起來也不很方便,較合理的方式 就是條件判斷語句[if等] 與goto結合使用。
start
批處理調用外部程序的命令(在新新窗口中運行,批處理會繼續往下運行,不理會外部程序的運行情況),若是直接
運行外部程序則必須等外部程序完成後才繼續 執行剩下的指令。
setlocal與變量延遲
setlocal enabledelayedexpansion
用 ! 感嘆號 來取變量, %var% ---> !var!
attrib 顯示或更改文件屬性
shift 更改批處理文件中可替換參數的位置 [表示不多用]
pushd popd
cd /d d:\mp4 #更改當前目錄爲d:\mp4
pushd c:\mp3 #保存當前目錄,並切換當前目錄爲c:\mp3
popd #恢復當前目錄爲剛纔保存的d:\mp4
通常用處不大,在當前目錄名不肯定時,並有些幫助, 但我感受至少在切換目錄時 加上/d 必定能夠正常切換
assoc ftype
文件關聯,感受這個搞破壞 比較合適;或者是作修復時
assoc 設置‘文件擴展名’關聯,關聯到‘文件類型’
ftype 設置'文件類型'關聯,關聯到‘執行程序和參數’
命令字符串%0 或 %1被經過關聯調用的文件名所代替。 %* 獲得全部的參數, %2 獲得第一個參數,%~n獲得其他全部以nth 參數打頭的參數;n 能夠是從2到 9 的數字。
windows執行一個程序的過程,【安裝時先經過assoc 設置正確的 文件擴展名 關聯,再經過ftype 設置文件類型關聯,關聯到相應的執行程序和參數】
assoc與ftype 示例:
##顯示系統默認的,一樣【assoc .zip=HaoZip.zip ftype HaoZip.zip="C:\Program Files\HaoZip\HaoZip.exe" "%1" 就能夠進行設置】
C:\Users\liuyuan>assoc .zip .zip=HaoZip.zip C:\Users\liuyuan>ftype HaoZip.zip HaoZip.zip="C:\Program Files\HaoZip\HaoZip.exe" "%1"
恢復:exefile的正確關聯
若是該關聯已經被破壞,能夠運行command.com,再運行 ftype exefile="%1" %*
二、經常使用特殊符號
@ 命令行回顯屏蔽符
% 批處理變量引導符
引用變量用%var%,調用程序外部參數用%1到%9等
%0 批處理文件自己, 包括完整的路徑和擴展名
%1 第一個參數 %9 第九個參數
|管道命令
^ 轉義字符 &
&& || 邏輯與 或
三、dos應用
1)for
for /d %%variable IN (set) do command
(set)至關於設置條件
通配符 * ?
* 任意N個字符, ?表示任意一個字符
@echo off color 0a for /D %%i in (c:\*) do echo %%i ::遞歸顯示c:\abd目錄下以.txt和.html結尾的文件輸出定向到 result.txt for /R "c:\abd" %%i in (*.txt;*.html) do if exist %%i echo %%i>> result.txt ::讀取結果中的每行,會自動忽略空白行 下例:排除以#開頭的行,以空格爲分隔,並輸出第1,2字段。 for /F "eol=# tokens=1,2 delims= " %%x in (result.txt) do ( echo %%x,%%y) rem for /L %variable IN (start,step,end) do command :: 從1開始,另開啓5個cmd窗口 for /L %%i in (1,1,5) do start cmd ::從5開始,每次減1,開啓5個cmd窗口 for /L %%i in (5,-1,1) do start cmd echo. pause
注: /R [[drive:]path] 路徑不支持通配符
2)系統變量
取了幾個感受 有用的:
%userdomain% 本地 返回包含用戶賬戶的域的名稱
%username% 返回當前登陸的用戶的名稱
%userprofile% 本地 返回當前用戶的配置文件的位置
%windir% 系統 返回操做系統目錄的位置
3)set
賦值 set var=[string]
set /a
set /p path=請輸入:
echo %path%
替換
set %path:str1=str2% 這種替換 頗有雞肋的感受,不能在原文件中直接替換,也許是我沒發現。
echo %path% 對文件進行替換,還有經過輸出重定向的方式,汗。。。
截取
%a:~[m[,n]%
m爲偏移量,n爲截取長度
set a=bbs.verybat.cn
::偏移量爲0,去掉最後的3個單位
set var1=%a:~0,-3%
echo var1=%var1%
::偏移量爲1,從左邊開始截取3個單位
set var2=%a:~1,3%
echo var2=%var2%
pause
運行結果:
result: var1=bbs.verybat
var2=bs.
下載linux下的命令【http://down.51cto.com/data/994101 】,對批處理是一個很好的補充。