如果工作目录中没有 7z.exe,则这非常适合下载 7zr 并在批处理脚本中执行解压缩任务。
if not exist "7z.exe" curl -L "https://www.7-zip.org/a/7zr.exe" -o 7z.exe
但是,如果我安装了 7-zip,并且 7z.exe 在 PATH 中,该怎么办?在这种情况下,我宁愿跳过下载 7zr,然后继续解压任务。
编辑:此用例仅作为示例。我的目的是分发下载所需内容的批处理脚本如果必要的。
答案1
您可以检查注册表项并检查此查询返回的错误级别:
Reg Query "HKEY_CURRENT_USER\SOFTWARE\7-Zip" /v "Path"
这是一个检查路径的完整示例7-zip在注册表中,如果不存在,他就会下载它。
@echo off
Title check the path of 7-Zip
Call :Check_7Zip
echo "%EXE_7Z_PATH%"
if not exist "%EXE_7Z_PATH%" Call :Download7Zip
pause & exit /b
::-----------------------------------------------------------------------------------------------------------------------------
:Check_7Zip
Reg Query "HKEY_CURRENT_USER\SOFTWARE\7-Zip" /v "Path">nul 2>&1
If [%errorlevel%] EQU [1] (Call :Download7Zip
) else (
@FOR /f "tokens=2*" %%i in ('Reg Query "HKEY_CURRENT_USER\SOFTWARE\7-Zip" /v "Path" 2^>nul') do (Set "EXE_7Z_PATH=%%j7z.exe")
)
Exit /B
::-----------------------------------------------------------------------------------------------------------------------------
:Download7Zip
curl -L "https://www.7-zip.org/a/7zr.exe" -o 7z.exe
Exit /B
::------------------------------------------------------------------------------------------------------------------------------
答案2
如果 PATH 中不存在 7z.exe,请尝试以下操作:
where /q 7z.exe || curl -L "https://www.7-zip.org/a/7zr.exe" -o 7z.exe
如果 7z.exe 已经存在,则仅输出 7z.exe 路径,如果不存在,它将运行curl -L "https://www.7-zip.org/a/7zr.exe" -o 7z.exe
:
where 7z.exe 2>nul || curl -L "https://www.7-zip.org/a/7zr.exe" -o 7z.exe
例子
C:> where /q 7z.exe || curl -L "https://www.7-zip.org/a/7zr.exe" -o 7z.exe
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 564k 100 564k 0 0 240k 0 0:00:02 0:00:02 --:--:-- 240k
C:\>set "path=%cd%;%path%"
C:\>where 7z.exe
C:\7z.exe