在批處理程式中執行條件處理。如果if命令中指定的條件為真,windows 將執行該條件後的命令。如果條件為假,windows 將忽略if子句中的命令,並執行else子句中的任何命令(如果已經指定了命令)。
if[not]errorlevelnumber command [elseexpression]
if[not] string1==string2 command [elseexpression]
if[not]existfilename command [elseexpression]
啟用了命令擴充套件:
if[/i] string1 compare-op string2 command [elseexpression]
if cmdextversionnumber command [elseexpression]
if definedvariable command [elseexpression]
引數
not
指定只有當條件為假時 windows 才能執行該命令。
errorlevelnumber
只有當前乙個程式返回大於或等於 number 的退出**時,才能指定真條件。
command
指定在符合前面的條件時 windows 將執行的命令。
string1==string2
只有當 string1 和 string2 相同時才能指定真條件。這些值可以是文字字串或批處理變數(例如,%1)。文字字串不需要引號。
existfilename
如果 filename 存在,則指定真條件。
compare-op
以下三字母比較操作符中的乙個:
操作符 說明 equ 等於 neq 不等於 lss 少於 leq 少於或等於 gtr 大於 geq 大於或等於
/i
指定/i開關時,將強制字串比較按忽略大小寫情況進行。/i開關也可以用於if的 string1==string2 格式。這些比較是通用的,如果 string1 和 string2 都由所有的數字組成,那麼字串將被轉換為數字並且將執行數字比較。
cmdextversionnumber
cmdextversion條件的作用就像是 errorlevel,但它需要與 cmd.exe 的「命令擴充套件」功能相關聯的內部版本號比較。第一版是 1,當重大的增強新增到命令擴充套件中時,版本號將增加 1。當禁用命令擴充套件時,cmdextversion條件不會為真。
definedvariable
defined條件的作用就象是exist,但它使用環境變數名,並且如果環境變數已經定義它將返回真值。使用該條件新增三個變數:%errorlevel%,%cmdcmdline%和%cmdextversion%。
%errorlevel%擴充套件到 errorlevel 當前值的字串表示式,如果沒有名為 errorlevel 的環境變數,在這種情況下可取代它的值。程式執行後,下面的**errorlevel使用:
goto answer%erorlevel% :answer0 echo program had return code 0 :answer1 echo program had return code 1
也可以在 compare-op 中使用上面列出的比較操作符:
if %errorlevel% leq 1 goto okay
%cmdcmdline%在任何 cmd.exe 處理之前擴充套件傳遞到 cmd.exe 的源命令列,如果沒有名為cmdcmdline的環境變數,在這種情況下可取代它的值。
%cmdextversion%擴充套件到cmdextversion當前值的字串表示式,如果沒有名為 cmdextversion 的環境變數,在這種情況下可取代它的值。
expression
在else子句中,expression 由 windows 命令和任何傳遞到命令的引數組成。
附加乙個例項,都是轉的……謝謝作者
1。判斷目錄或檔案的存在,來從伺服器同步檔案到本地
如d:\pubclt 目錄被客人刪除。可以用這種辦法解決(注:我的伺服器為fyt200)
@echo off
if exist tmp.txt del /q tmp.txt
for /f %%i in ('dir /a /b d:\pubclt\pubwin.exe') do echo %%i>>tmp.txt
if exist tmp.txt (goto 11) else (goto 12)
if exist tmp.txt del /q tmp.txt
:11@echo -----------------------------
@echo 客戶端無需更新.
@echo -----------------------------
goto q
:12xcopy
\\fyt200\share\pubclt
d:\pubclt\ /s /f /y /q &
\\fyt200\share\soft\control\pubwin.exe
d:\pubclt\pubwin.exe
@echo -----------------------------
@echo ....客戶端更新完畢...........
@echo ----------------------------- :q
exit
這個批處理的意思是查詢d盤中pubclt目錄下的pubwin.exe檔案,如果查詢存在,則goto 11,如不存在則 goto12 其實這種辦法可以用if exist 和if not exist命令實現,但是本人覺得這個會更好用一些。處理面也會廣很多。
2。對比伺服器的某個目錄,刪除多餘的目錄和檔案。(注:我的伺服器為fyt200)
@echo -----------------------------
@echo .同步更新磁碟d中所有和資料夾.
@echo -----------------------------
@echo .
cd /d d:
for /f "usebackq delims=" %%a in (`dir /a /b`) do (attrib "%%a" -r -h -s)
for /d %%a in ("d:\*") do if not exist "
\\fyt200\share\%%~na
" rd /s /q "%%a"
for %%a in ("d:\*") do if not exist "
\\fyt200\share\%%~na
" del /f /q "%%a"
3。隱藏d盤根目錄中的所有檔案和資料夾
cd /d d:
for /f "usebackq delims=" %%a in (`dir /a /b`) do (attrib "%%a" -r +h -s)
這個懂點批處理的人可能都懂,不多解釋
4。在批處理中使用密碼。當然只是簡單的批處理,沒有辦法使用星號密碼,技術還沒有到那個地步。呵呵。。
@echo off
set num=0
:11set /p pass=請輸入密碼:
if "%pass%"=="admin" goto next1
set /a num=%num% + 1
if %num%==3 goto no1
goto 11
:no1
%windir%\system32\rundll32.exe user32.dll,lockworkstation
goto 11
:next1
pause
這個批處理的意思是:先設定num為0。密碼為admin 輸入正確,跳轉到next1 ,若密碼輸入錯誤一次,則num加1,若3此輸入密碼錯誤則鎖屏。。
另:批處理做好後,最好是使用quickbat等軟體把檔案屬性改為幽靈檔案。然後編譯為exe檔案。或者用vbs檔案後台執行,vbs這個網上都很流行。如:
dim objshell
set objshell=wscript.createobject("wscript.shell")
ireturn=objshell.run("cmd.exe /c\\192.168.0.200\share\soft\control\client.bat", 0, true)
批處理SQL語句
作用 想傳送多條sql,又要降低與資料庫系統的互動,這時使用批處理 一 statement物件 適合對不同結構的sql語句進行批處理操作 步驟 1 將給定的 sql 命令新增到此 statement 物件的當前命令列表中 void addbatch string sql 2 將一批命令提交給資料庫來...
批處理(語句結構)
批處理是一門簡單的指令碼語言,雖然不能獨當一面,但可以作為工作中的輔助工具 和其他語言相比,批處理語言有其先天性的優勢 1 系統自帶,無需另行安裝 2 命令少,語句簡潔,上手非常快 3 編寫出來的指令碼小巧玲瓏,隨寫隨用 一,語句結構 選擇和迴圈 1.if 條件判斷語句 選擇結構 判斷資訊是否相等 ...
批處理SQL語句
作用 想傳送多條sql,又要降低與資料庫系統的互動,這時使用批處理 一 statement物件 適合對不同結構的sql語句進行批處理操作 步驟 1 將給定的 sql 命令新增到此 statement 物件的當前命令列表中 void addbatch string sql 2 將一批命令提交給資料庫來...