欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

windows cmd 中判斷命令是否執(zhí)行成功的方法

 更新時(shí)間:2025年05月21日 13:30:24   作者:sayyy  
在 Windows 的 CMD 命令提示符中,可以通過(guò)檢查 %ERRORLEVEL% 環(huán)境變量來(lái)判斷上一個(gè)命令是否執(zhí)行成功,大多數(shù)命令執(zhí)行成功后返回 0,失敗時(shí)返回非零值(具體值取決于命令類(lèi)型)

在 Windows 的 CMD 命令提示符中,可以通過(guò)檢查 %ERRORLEVEL% 環(huán)境變量來(lái)判斷上一個(gè)命令是否執(zhí)行成功。大多數(shù)命令執(zhí)行成功后返回 0,失敗時(shí)返回非零值(具體值取決于命令類(lèi)型)。下面就為大家介紹一下

基礎(chǔ)用法

1. 直接檢查 %ERRORLEVEL%

命令
if %ERRORLEVEL% EQU 0 (
    echo 命令執(zhí)行成功
) else (
    echo 命令執(zhí)行失敗,錯(cuò)誤碼: %ERRORLEVEL%
)

示例

ping -n 1 www.google.com
if %ERRORLEVEL% EQU 0 (
    echo 網(wǎng)絡(luò)連通
) else (
    echo 網(wǎng)絡(luò)不可達(dá)
)

進(jìn)階用法

2. 使用 && 和 || 簡(jiǎn)化邏輯

  • &&:僅當(dāng)命令成功時(shí)執(zhí)行后續(xù)操作
  • ||:僅當(dāng)命令失敗時(shí)執(zhí)行后續(xù)操作
命令 && (
    echo 成功后的操作
) || (
    echo 失敗后的操作
)

示例

copy file1.txt file2.txt && (
    echo 文件復(fù)制成功
) || (
    echo 文件復(fù)制失敗
)

注意事項(xiàng)

%ERRORLEVEL% 的延遲展開(kāi)問(wèn)題在批處理腳本(.bat 或 .cmd)中,若在代碼塊(如 if 或 for)內(nèi)部使用 %ERRORLEVEL%,需啟用延遲擴(kuò)展:

setlocal enabledelayedexpansion
命令
if !ERRORLEVEL! EQU 0 (
    echo 成功
)

部分命令的特殊返回值某些命令可能不遵循 0=成功 的規(guī)則(例如 choice.exe),需查閱具體命令文檔。

靜默執(zhí)行命令若不想顯示命令的輸出,可使用重定向:

命令 >nul 2>&1 && echo 成功 || echo 失敗

完整批處理腳本示例

@echo off
setlocal enabledelayedexpansion

echo 正在嘗試創(chuàng)建目錄...
mkdir C:\test_dir

if !ERRORLEVEL! EQU 0 (
    echo 目錄創(chuàng)建成功
) else (
    echo 目錄創(chuàng)建失敗,錯(cuò)誤碼: !ERRORLEVEL!
)

endlocal

windows cmd 中判斷命令執(zhí)行成功

用%errorlevel%變量獲取上一條命令的返回值。

cmd> cd /d d:
cmd> if %errorlevel% == 0 ( echo successfully ) else ( echo failed)

腳本中搭配goto使用

好多腳本中判斷命令執(zhí)行是否成功時(shí),搭配goto使用(貌似是為了在cmd腳本中實(shí)現(xiàn)函數(shù)功能的解決辦法)。

@ECHO OFF
cd /d d:
IF %errorlevel% NEQ 0 GOTO ERROR
IF %errorlevel% EQU 0 GOTO OK

:OK
ECHO command success
GOTO END

:ERROR
ECHO command failed
GOTO END

:END
@ECHO ON

執(zhí)行很多條命令的情況(a.bat):

@ECHO OFF
cd /d c:
IF %errorlevel% NEQ 0 GOTO ERROR
ECHO 進(jìn)入C盤(pán)

cd /d d:
IF %errorlevel% NEQ 0 GOTO ERROR
ECHO 進(jìn)入D盤(pán)

cd /d dz:
IF %errorlevel% NEQ 0 GOTO ERROR
ECHO 進(jìn)入DZ盤(pán)

cd /d c:
IF %errorlevel% NEQ 0 GOTO ERROR
ECHO 進(jìn)入C盤(pán)

:OK
ECHO command success
GOTO END

:ERROR
ECHO command failed
GOTO END

:END
@ECHO ON

參考if命令的幫助文檔

cmd>if /?
執(zhí)行批處理程序中的條件處理。

IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command

  NOT               指定只有條件為 false 的情況下,Windows 才
                    應(yīng)該執(zhí)行該命令。

  ERRORLEVEL number 如果最后運(yùn)行的程序返回一個(gè)等于或大于
                    指定數(shù)字的退出代碼,指定條件為 true。

  string1==string2  如果指定的文字字符串匹配,指定條件為 true。

  EXIST filename    如果指定的文件名存在,指定條件為 true。

  command           如果符合條件,指定要執(zhí)行的命令。如果指定的
                    條件為 FALSE,命令后可跟 ELSE 命令,該命令將
                    在 ELSE 關(guān)鍵字之后執(zhí)行該命令。

ELSE 子句必須出現(xiàn)在同一行上的 IF 之后。例如:

    IF EXIST filename. (
        del filename.
    ) ELSE (
        echo filename. missing.
    )

由于 del 命令需要用新的一行終止,因此以下子句不會(huì)有效:

IF EXIST filename. del filename. ELSE echo filename. missing

由于 ELSE 命令必須與 IF 命令的尾端在同一行上,以下子句也
不會(huì)有效:

    IF EXIST filename. del filename.
    ELSE echo filename. missing

如果都放在同一行上,以下子句有效:

    IF EXIST filename. (del filename.) ELSE echo filename. missing

如果命令擴(kuò)展被啟用,IF 會(huì)如下改變:

    IF [/I] string1 compare-op string2 command
    IF CMDEXTVERSION number command
    IF DEFINED variable command

其中, compare-op 可以是:

    EQU - 等于
    NEQ - 不等于
    LSS - 小于
    LEQ - 小于或等于
    GTR - 大于
    GEQ - 大于或等于

而 /I 開(kāi)關(guān)(如果指定)說(shuō)明要進(jìn)行的字符串比較不分大小寫(xiě)。
/I 開(kāi)關(guān)可以用于 IF 的 string1==string2 的形式上。這些
比較都是通用的;原因是,如果 string1 和 string2 都是
由數(shù)字組成的,字符串會(huì)被轉(zhuǎn)換成數(shù)字,進(jìn)行數(shù)字比較。

CMDEXTVERSION 條件的作用跟 ERRORLEVEL 的一樣,除了它
是在跟與命令擴(kuò)展有關(guān)聯(lián)的內(nèi)部版本號(hào)比較。第一個(gè)版本
是 1。每次對(duì)命令擴(kuò)展有相當(dāng)大的增強(qiáng)時(shí),版本號(hào)會(huì)增加一個(gè)。
命令擴(kuò)展被停用時(shí),CMDEXTVERSION 條件不是真的。

如果已定義環(huán)境變量,DEFINED 條件的作用跟 EXIST 的一樣,
除了它取得一個(gè)環(huán)境變量,返回的結(jié)果是 true。

如果沒(méi)有名為 ERRORLEVEL 的環(huán)境變量,%ERRORLEVEL%
會(huì)擴(kuò)充為 ERROLEVEL 當(dāng)前數(shù)值的字符串表達(dá)式;否則,你會(huì)得到
其數(shù)值。運(yùn)行程序后,以下語(yǔ)句說(shuō)明 ERRORLEVEL 的用法:

    goto answer%ERRORLEVEL%
    :answer0
    echo Program had return code 0
    :answer1
    echo Program had return code 1

你也可以使用以上的數(shù)字比較:

    IF %ERRORLEVEL% LEQ 1 goto okay

如果沒(méi)有名為 CMDCMDLINE 的環(huán)境變量,%CMDCMDLINE%
將在 CMD.EXE 進(jìn)行任何處理前擴(kuò)充為傳遞給 CMD.EXE 的原始
命令行;否則,你會(huì)得到其數(shù)值。

如果沒(méi)有名為 CMDEXTVERSION 的環(huán)境變量,
%CMDEXTVERSION% 會(huì)擴(kuò)充為 CMDEXTVERSION 當(dāng)前數(shù)值的
字串符表達(dá)式;否則,你會(huì)得到其數(shù)值。

總結(jié)

方法說(shuō)明 %ERRORLEVEL%直接檢查環(huán)境變量,適合復(fù)雜邏輯判斷

&& 和 || 簡(jiǎn)化代碼,適合快速判斷成功/失敗

延遲擴(kuò)展 !ERRORLEVEL!在代碼塊內(nèi)部使用時(shí)必須啟用,避免因變量展開(kāi)時(shí)機(jī)問(wèn)題導(dǎo)致判斷錯(cuò)誤

掌握這些方法后,可以在批處理腳本中靈活控制命令執(zhí)行流程!

相關(guān)文章

最新評(píng)論