編寫批處理時常常須要用到外部命令,一些經常使用的命令通常的系統都會有,可是一些精簡的系統上可能就沒有了,若是沒有作判斷就可能致使程序出現未知的錯誤.web
通常檢測文件是否存在可使用測試
IF EXIST filename 執行某個命令…spa
可是這樣只能檢測當前目錄下或指定目錄的,而批處理的外部命令經過PATH變量來肯定位置的.正常狀況下能夠經過如下命令來肯定這個外部命令是否存在,3d
for %I in (find.exe) do if "%~$PATH:I"=="" echo find 命令不存在code
爲了之後方便就寫了一個模塊,用於判斷命令是否存在.orm
- @echo off
- cls&echo.IF_EXIST.cmd by chenall 2009-09-29http://www.chenall.com
- echo.
- echo.功能:
- echo. 從環境變量PATH,當前目錄,程序所在目錄中查找指定的文件,若是找到就顯示並返回值0,不然就返回1
- echo.
- echo.使用方法:
- echo. 直接複製下面::模塊開始::到::模塊結束::之間的代碼到你的批處理程序中.而後使用如下命令調用.
- echo. CALL :IF_EXIST xxxx.xxx
- echo.
- echo.使用例子:
- echo. CALL :IF_EXIST find.exe || echo.find.exe 不存在
- echo.
- echo.注:只是簡單查找,而且不支持查找子目錄.主要用於批處理中判斷某個外部命是否存在.
- echo. 實際應用中能夠刪除echo %~$PATH:1語句刪除輸出顯示,或者在調用時加一個>nul
- echo.
- echo.
- ECHO.如下是測試命令.
- ECHO.查找FIND.EXE
- CALL :IF_EXIST FIND.EXE || ECHO.FIND.EXE 不存在
- CALL :IF_EXIST FIND.EXE >nul ||echo.出錯了,find.exe不存在.
- ECHO.查找noEXIST.FILE
- CALL :IF_EXIST noEXIST.FILE || ECHO.noEXIST.FILE 不存在
- PAUSE
- GOTO :EOF
-
- ::::::::::::::::::::::::模塊開始::::::::::::::::::::::::
- :IF_EXIST BY chenall QQ:366840202 2009-09-29
- SETLOCAL&PATH %PATH%;%~dp0;%cd%
- if "%~$PATH:1"=="" exit /b 1
- echo %~$PATH:1
- exit /b 0 http://www.chenall.com
- :::::::::::::::::::::::模塊結束:::::::::::::::::::::::::