1樓:匿名使用者
把那倆個 if 條件語句換個次序看看,也就是改成下面的!
if errorlevel 1 goto 14if errorlevel 0 goto 13究竟是為什麼,我好想以前看過在verybat 這個論壇裡面看過一個id:"英雄" 的
人寫過一個教程,裡面詳細解釋了這個原因!
2樓:匿名使用者
第一種:
if errorlevel 0 goto 13這種寫法不對,改成:if %errorlevel%==0 goto 13
第二種沒問題。
3樓:全天佔線
使用 if errorlevel 的時候,應該把數字高的放在前面,因為此處的 if errorlevel 0 是在命令返回值大於 0 的時候成立的,相當於 if %errorlevel% geq 0,而當刪除失敗時 errorlevel 等於 1,當然符合大於 0 的條件了。
三個解決辦法:
1、調轉順序,先執行 errorlevel 值高的 if 命令2、使用 if %errorlevel%==0 這裡的 %errorlevel% 將被預處理成固定值,與數字 0 進行數值比較,也就不存在返回值大於 0 時產生的問題了
3、使用邏輯連線符代替 if errorlevel,改成:
del /f /a /q /s %1 && echo 刪除成功&&goto 13 || echo 刪除失敗&&goto 14
批處理檔案%errorlevel%在if巢狀下的返回值問題
4樓:匿名使用者
@echo off
setlocal enabledelayedexpansion@ipconfig >ip.txt
@find "192.168.2." ip.txt >nulif %errorlevel%==1 (
@find "192.168.1." ip.txt >nulif !errorlevel!==1 (echo 當前為未知網段設定!!!
) else (
echo 當前為1網段設定!!!
)) else (
echo 當前為2網段設定!!!
)pause
在一條完整的語句中或者說()中,兩個相同的變數會被預處理,就變成了%errorlevel%=1,後面的%errorlevel%也等於1.啟用延遲變數擴充套件後就可以正確處理.在for命令也是類似方法.
或者@echo off
@ipconfig >ip.txt
@find "192.168.2." ip.txt >nulif errorlevel==1 (
@find "192.168.1." ip.txt >nulif errorlevel==1 (
echo 當前為未知網段設定!!!
) else (
echo 當前為1網段設定!!!
)) else (
echo 當前為2網段設定!!!
)pause
5樓:匿名使用者
find和findstr的返回值經常會不符合你的預期的。。。建議還是用管道符號&&和||
關於dos中if errorlevel的問題
6樓:軒塵
因為無論c:\在不在if語句都能執行正確,所有%errorlevel%都是0.
你想實現這個目的把第一句改以下就可以
@echo off
cd /d c:\
:yes echo 恭喜你,你中獎了!~ %errorlevel%pause&exit
:no echo 很抱歉,請你重試!~ %errorlevel%pause&exit
7樓:三分魂魄出靈臺
1.if errorlevel含義是:如果返回的錯誤碼值大於或等於值 的時候,將執行cmmand
xcopy 999.txt e:\這個命令找不到999.txt時的返回值是4,所以即使f盤下沒有999.txt,也會顯示no和yes
你可以改用 if %errorlevel% 它含義是:如果返回的錯誤碼值等於值 的時候,將執行cmmand操作
2.echo %errorlevel%這個就是檢視上一個命令的返回值
批處理的errorlevel? 5
8樓:依夢琴瑤
@echo off
set var=100
if %var% gtr 10 (
if %var% gtr 20 (
echo 正確
) else (
echo 錯誤
)) else (
echo 錯誤
)pause
bat批處理中 %errorlevel%返回值問題 20
9樓:依夢琴瑤
%errorlevel%改成!errorlevel!試試看
因為你用到了變數延遲。
批處理判斷語句是否執行成功的方法
10樓:匿名使用者
什麼語言,什麼環境,設定一個返回值就可以了,當執行成功返回標誌就行了。
11樓:匿名使用者
根據系統變數%errorlevel%來判斷其返回的結果,從而判斷批處理是否成功執行。
errorlevel的返回值:每個命令執行之後,基本返回值0或1(0表示成功,1表示失敗)
特別是內部命令,不能一概的說是系統規定的,而是命令所指定的,第三方命令(外部命令)會提供多個甚至幾十個返回值但最多 256±1 個返回值,各命令的返回值含義可能各不相同。
本來批處理檢測是否成功有個錯誤返回值errorlevel,一般程式執行結束都會有個返回值,0表示執行成功,if %errorlevle% equ 0 echo yes
不過這個錯誤**有些程式不怎麼好用。。。所以一般都用管道符號&&來代替
set/a c=a+b &&set/a c=c+1 表示如果c=a+b執行成功才會執行c=c+1
批處理問題,批處理問題
setlocal 設定本地環境變數 setlocal enabledelayedexpansion 啟用變數延遲,可以在同一語句內部直接使用上一次改變後的變數 tasklist命令用來顯示執行在本地或遠端計算機上的所有程序,帶有多個執行引數。使用格式 tasklist s system u user...
求定時批處理,求一個定時批處理
就用下面這個命令就行了,直接儲存成bat,放到開機啟動裡就可以了 shutdown l t 2400 在windows下,使用命令提示符,輸入命令 shutdown s 關機 shutdown r 關閉並重啟 shutdown l 登出 shutdown a 取消關機 注 還可以帶上 t 表示延時關...
批處理檢測密碼
echo off if not exist c password.txt set p a 輸入初始密碼 echo a c password.txt set p c 密碼錯誤 pause exit start ls方法是正確但是 不詳細 如下 echo off set p a 輸入初始密碼 echo ...