在我的.bat文件中,如何通过用户可能经历的其他先前安装来检查系统中是否有wget或curl。 这个检查是否可能,我可以有我的文件中的if then else
逻辑作出不同的反应,就像我们在正常的编程。 我基本上想用wget或curl来下载文件。
If (wget is available) do something else if (curl is available) do something else else tell the user they are out of luck
如果你知道你期望找到EXE的路径,这很容易:
IF EXIST C:\Windows\wget.exe ( *** do something with it ***)
…当然你可以做IF NOT EXIST
与blurb复制它,或者使用ELSE
语句。
否则,如果你不知道你在哪里可以找到这个文件,你可以用这样的东西来搜索它(在这里找到原始的源代码):
@echo off SETLOCAL (set WF=) (set TARGET=wget.exe) :: Look for file in the current directory for %%a in ("" %PATHEXT:;= %) do ( if not defined WF if exist "%TARGET%%%~a" set WF=%CD%\%TARGET%%%~a) :: Look for file in the PATH for %%a in ("" %PATHEXT:;= %) do ( if not defined WF for %%g in ("%TARGET%%%~a") do ( if exist "%%~$PATH:g" set WF=%%~$PATH:g)) :: Results if defined WF ( *** do something with it here *** ) else ( echo The file: "%~1" was not found )
你可以将整个块封装到一个函数中,并为每个EXE调用一次(将%TARGET%
s改回%~1
,给它一个TITLE,然后call :TITLE wget.exe
)。
或者,你可以采取不同的方法,只是尝试命令,看看他们是否失败。 由于0的ERRORLEVEL通常意味着成功,所以你可以这样做:
wget -q <TARGET_URL> IF NOT ERRORLEVEL 0 ( curl <TARGET_URL> IF NOT ERRORLEVEL 0 ( ECHO Download failed! EXIT 1 ) ) :: now continue on with your script...
Powershell v3 CTP1带有一个像wget / curl的命令。 这叫做Invoke-Web-Request。 要了解更多,你可以访问这个职位: http : //rambletech.wordpress.com/2011/09/21/windows-powershell-v3-includes-command-like-wgetcurl/