批處理errorlevel用在if語句中無效

2022-01-24 02:05:06 字數 3125 閱讀 6940

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 ...