說說批處理

一、經常使用批處理內部命令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 】,對批處理是一個很好的補充。

相關文章
相關標籤/搜索