重新學習DOS命令和BAT if 命令詳解

2021-08-03 06:09:25 字數 2768 閱讀 8845

因為要設定oracle的定期備份,所以再次操起闊別多年的dos命令和bat語法,以下記錄一些心得:

if 命令示例詳解  if,正如它e文中的意思,就是「如果」的意思,用來進行條件判斷。翻譯過來的意思就是:如果符合某一條件,便執行後面的命令。 

主要用來判斷,1、兩個「字串」是否相等;2、兩個數值是大於、小於、等於,然後執行相應的命令。 

當然還有特殊用法,如結合errorlevel:if errorlevel 1 echo error 

或者結合defined(定義的意思):if defined test (echo it is defined) else echo it isn't defined  用法示例: 

1、檢測字串(注意,用if檢測字串是否相等的時候,後面用的不是「=」,而是「==」): 

複製** **如下:

@echo off 

set "str=this is a test" 

rem 檢測變數%str%是否等於test,如果相等,顯示ok,否則顯示no 

if "%str%"=="test" (echo ok) else echo no 

pause>nul  2、檢測數值:(注意,批處理中大於符號不能用:「>」,而用"gtr",其它的也類似) 

比較運算子一覽: 

equ - 等於 

neq - 不等於 

lss - 小於 

leq - 小於或等於 

gtr - 大於 

geq - 大於或等於 

檢測數值 20 是否大於 15演示**: 

複製** **如下:

@echo off 

set /a num1=20 

set /a num2=15 

if %num1% gtr %num2% echo %num1%大於%num2% 

if %num1% equ %num2% echo %num1%等於%num2% 

if %num1% lss %num2% echo %num1%小於%num2% 

pause>nul  3、if結合errorlevel使用: 

說明:環境變數errorlevel的初始值為0,當一些命令執行不成功,就會返回乙個數值,如:1 ,2 等 

if-errorlevel 

測試**: 

複製** **如下:

@echo off 

xcopy f:\test.bat d:\ 

if errorlevel 1 echo 檔案拷貝失敗 

if errorlevel 0 echo 成功拷貝檔案  如果檔案拷貝成功,螢幕就會顯示「成功拷貝檔案」,否則就會顯示「檔案拷貝失敗」。 

if errorlevel 是用來測試它的上乙個dos命令的返回值的,注意只是上乙個命令的返回值,而且返回值必須依照從大到小次序順序判斷。 

因此下面的批處理檔案是錯誤的: 

@echo off 

xcopy c:\autoexec.bat d:\ 

if errorlevel 0 echo 成功拷貝檔案 

if errorlevel 1 echo 未找到拷貝檔案 

if errorlevel 2 echo 使用者通過ctrl-c中止拷貝操作 

if errorlevel 3 echo 預置錯誤阻止檔案拷貝操作 

if errorlevel 4 echo 拷貝過程中寫盤錯誤 

無論拷貝是否成功,後面的: 

未找到拷貝檔案 

使用者通過ctrl-c中止拷貝操作 

預置錯誤阻止檔案拷貝操作 

拷貝過程中寫盤錯誤 

都將顯示出來。 

複製** **如下:

附錄: 

以下就是幾個常用命令的返回值及其代表的意義: 

backup 

0 備份成功 

1 未找到備份檔案 

2 檔案共享衝突阻止備份完成 

3 使用者用ctrl-c中止備份 

4 由於致命的錯誤使備份操作中止 

diskcomp 

0 盤比較相同 

1 盤比較不同 

2 使用者通過ctrl-c中止比較操作 

3 由於致命的錯誤使比較操作中止 

4 預置錯誤中止比較 

diskcopy 

0 盤拷貝操作成功 

1 非致命盤讀/寫錯 

2 使用者通過ctrl-c結束拷貝操作 

3 因致命的處理錯誤使盤拷貝中止 

4 預置錯誤阻止拷貝操作 

format 

0 格式化成功 

3 使用者通過ctrl-c中止格式化處理 

4 因致命的處理錯誤使格式化中止 

5 在提示「proceed with format(y/n)?」下使用者鍵入n結束 

xcopy 

0 成功拷貝檔案 

1 未找到拷貝檔案 

2 使用者通過ctrl-c中止拷貝操作 

4 預置錯誤阻止檔案拷貝操作 

5 拷貝過程中寫盤錯誤  4、if還有乙個特殊的用法就是可以用來檢測某個變數是否已經被定義 

用法示例: 

複製** **如下:

@echo off 

set "str1=ok" 

set "str2=no" 

if defined str1 echo str1已經被定義 

if defined str2 echo str2已經被定義 

if defined str3 (echo str3已經被定義) else echo str3 沒有被定義 

pause>nul  

重新學習makefile

今天回顧了一下makefile,做下筆記 首先準備幾個簡單的檔案 add.c head.h main.c mul.c sub.c 然後第一版 makefile 然後第二版 gcc c main.c o main.o 然後第三版 makefile 的語法跟shell 很像 第四版 目標 依賴 tab ...

重新學習struts

這就是所謂的一邊工作一邊學習。今天準備把給公司寫個管理頁面,按照之前的路數,寫起來應該挺快,但是不太規範。也就沉下心來學習一下了。第二個學習的是,異常處理。也是在學校的時候,聽老師說過,struts2有提供乙個異常處理機制。平常我們有些異常處理,會在 中寫try catch。public strin...

mysql重新學習筆記

mysql命令複習 desc table 列式展示 alter add 增加列 delete和 truncate table的區別 1.delete dml語言 資料還可以找回來,恢復回來 逐條刪除 刪除速度要慢一些 可以有條件的刪除。delete from 表名 where 條件 2.trunca...