關於批處理的問題求解

2022-11-12 08:05:28 字數 3189 閱讀 9692

1樓:匿名使用者

在cmd視窗輸入 if/? 回車顯示幫助如下,dos命令基本都可以通過這個方法取得幫助。

執行批處理程式中的條件處理。

if [not] errorlevel number command

if [not] string1==string2 command

if [not] exist filename command

not 指定只有條件為 false 的情況下, windows xp 才

應該執行該命令。

errorlevel number 如果最後執行的程式返回一個等於或大於

指定數字的退出編碼,指定條件為 true。

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

exist filename 如果指定的檔名存在,指定條件為 true。

command 如果符合條件,指定要執行的命令。如果指定的

條件為 false,命令後可跟一個執行 else

關鍵字後的命令的 else 命令。

else 子句必須在 if 之後出現在同一行上。例如:

if exist filename. (

del filename.

) else (

echo filename. missing.

)因為 del 命令需要用一個新行終止,以下子句不會有效:

if exist filename. del filename. else echo filename. missing

由於 else 命令必須與 if 命令的尾端在同一行上,以下子句也

不會有效:

if exist filename. del filename.

else echo filename. missing

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

if exist filename. (del filename.) else echo filename. missing

如果命令副檔名被啟用,if 會如下改變:

if [/i] string1 compare-op string2 command

if cmdextversion number command

if defined variable command

其中,比較運算子可以是:

equ - 等於

neq - 不等於

lss - 小於

leq - 小於或等於

gtr - 大於

geq - 大於或等於

及 /i 開關;如果該開關被指定,則說明要進行的字串比較不分

大小寫。/i 開關可以用於 if 的 string1==string2 的形式上。這些

比較都是通用的;原因是,如果 string1 和 string2 都是由數字

組成的,字串會被轉換成數字,進行數字比較。

cmdextversion 條件的作用跟 errorlevel 的一樣,除了它

是在跟與命令副檔名有關聯的內部版本號比較。第一個版本

是 1。每次對命令副檔名有相當大的增強時,版本號會增加一個。

命令副檔名被停用時,cmdextversion 條件不是真的。

如果已定義環境變數,defined 條件的作用跟 exists 的一樣,

除了它取得一個環境變數,返回的結果是 true。

如果沒有名為 errorlevel 的環境變數,%errorlevel%

會擴充為 errolevel 當前數值的字串表示式;否則,您會得到

其數值。執行程式後,以下語句說明 errorlevel 的用法:

goto answer%errorlevel%

:answer0

echo program had return code 0

:answer1

echo program had return code 1

您也可以使用以上的數字比較:

if %errorlevel% leq 1 goto okay

如果沒有名為 cmdcmdline 的環境變數,%cmdcmdline%

將在 cmd.exe 進行任何處理前擴充為傳遞給 cmd.exe 的原始

命令列;否則,您會得到其數值。

如果沒有名為 cmdextversion 的環境變數,

%cmdextversion% 會擴充為 cmdextversion 當前數值的

字串符表示式;否則,您會得到其數值。

2樓:

求反用if not

if not "%a%"=="1" goto aaa如果你是想按1執行aaa那麼

if "%a%"=="1" goto aaa 是正確的下面來舉個if "%a%"=="1" goto aaa 例子吧@echo off

:bbset/p a=請輸入:

if "%a%"=="1" goto aaaecho 輸入錯誤!

goto bb

:aaa

echo 這裡是aaa

pause

下面再來舉個if not "%a%"=="1" goto aaa 例子吧

@echo off

:bbset/p a=請輸入:

if not "%a%"=="1" goto aaaecho 你輸入的是1

pause

goto end

:aaa

echo 這裡是aaa

pause

希望這兩個例子能夠對你有些幫助,從而在批處理中能夠靈活運用這一複合語句。

3樓:匿名使用者

得加空格:

if "%a%" neq "1" goto aaa例如:::═════代═══碼═══開═══始═════@echo off

set /a a=2

if "%a%" neq "1" goto aaaecho no

pause&exit

:aaa

echo hello

pause

::═════代═══碼═══結═══束═════

4樓:匿名使用者

if "%a%" neq "1" goto :eofgoto aaa

:aaa

或if "%a"=="1" goto aaagoto :eof

:aaa

批處理問題,批處理問題

setlocal 設定本地環境變數 setlocal enabledelayedexpansion 啟用變數延遲,可以在同一語句內部直接使用上一次改變後的變數 tasklist命令用來顯示執行在本地或遠端計算機上的所有程序,帶有多個執行引數。使用格式 tasklist s system u user...

批處理改名的問題

不好意思,沒有完全看清楚lz的問題,已經修改。把批處理檔案同.txt,dat檔案放在一個目錄裡,執行。修改後的 echo off setlocal enabledelayedexpansionset z 0000000000 for f delims i in dir txt dat b do se...

批處理搜尋檔案的問題

例如 我想在d盤下搜尋 exe吧,我先在批處理裡設定好然後自動執行搜尋。不知道能否實現?還有要是能實現,能否自主刪除掉這個 exe這個檔案呢?假設你的 exe 123.exe,下面你可以把123.exe改成你的 echo off for r d i in do pushd i if exist 12...