无忧启动论坛
标题:
请帮忙完善下读取Windows系统和Office安装ID的批处理,让它能识别出Offi...
[打印本页]
作者:
七仙花
时间:
2021-1-14 21:52
标题:
请帮忙完善下读取Windows系统和Office安装ID的批处理,让它能识别出Offi...
本帖最后由 七仙花 于 2021-1-21 21:05 编辑
最近参考网上的代码,写了个读取Windows系统和Office安装ID的批处理,Windows系统识别没问题,但是Office版本的不知如何区分2016和2019,自己也没条件测试,还请各位高手给完善下。
@echo off
:获取当前 Windows 系统版本
for /f "tokens=3" %%m in ('wmic os get Caption') do if /i "%%m" neq "" set Win=%%m
:输出 Windows 安装 ID
echo Windows %Win% 安装 ID:
echo.
for /f "tokens=3 delims=: " %%i in ('cscript %windir%\system32\slmgr.vbs /dti') do set ID=%%i
if /i %Win%==7 (echo %ID:~0,6%-%ID:~6,6%-%ID:~12,6%-%ID:~18,6%-%ID:~24,6%-%ID:~30,6%-%ID:~36,6%-%ID:~42,6%-%ID:~48,6%) else (echo %ID:~0,7%-%ID:~7,7%-%ID:~14,7%-%ID:~21,7%-%ID:~28,7%-%ID:~35,7%-%ID:~42,7%-%ID:~49,7%-%ID:~56,7%)
:保存 Windows 安装 ID 到文本文件
@echo Windows %Win% 安装 ID:> "%~dp0安装 ID.txt"
if /i %Win%==7 (echo %ID:~0,6%-%ID:~6,6%-%ID:~12,6%-%ID:~18,6%-%ID:~24,6%-%ID:~30,6%-%ID:~36,6%-%ID:~42,6%-%ID:~48,6% >> "%~dp0安装 ID.txt") else (echo %ID:~0,7%-%ID:~7,7%-%ID:~14,7%-%ID:~21,7%-%ID:~28,7%-%ID:~35,7%-%ID:~42,7%-%ID:~49,7%-%ID:~56,7% >> "%~dp0安装 ID.txt")
@echo %ID% >> "%~dp0安装 ID.txt"
echo. >> "%~dp0安装 ID.txt"
echo.
echo.
:获取当前 Office 版本
for /f "tokens=2 delims==" %%1 in ('assoc .doc') do (
for /f "tokens=2 delims==" %%2 in ('ftype %%1') do (
for %%3 in (%%2) do (if not defined p set p=%%~dp3
)
)
)
set n=%p:~-2,1%
if %n% equ 4 set V=2010
if %n% equ 5 set V=2013
if %n% equ 6 set V=2016
:输出 Office 安装 ID
echo Office %V% 安装 ID:
echo.
for /f "tokens=3 delims=:" %%i in ('cscript "%p%OSPP.VBS" /dinstid') do set ID=%%i
if /i %V% equ 2010 (echo%ID:~0,7%-%ID:~7,6%-%ID:~13,6%-%ID:~19,6%-%ID:~25,6%-%ID:~31,6%-%ID:~37,6%-%ID:~43,6%-%ID:~49,6%) else (echo%ID:~0,8%-%ID:~8,7%-%ID:~15,7%-%ID:~22,7%-%ID:~29,7%-%ID:~36,7%-%ID:~43,7%-%ID:~50,7%-%ID:~57,7%)
:保存 Office 安装 ID 到文本文件
@echo Office %V% 安装 ID:>> "%~dp0安装 ID.txt"
if /i %V% equ 2010 (echo%ID:~0,7%-%ID:~7,6%-%ID:~13,6%-%ID:~19,6%-%ID:~25,6%-%ID:~31,6%-%ID:~37,6%-%ID:~43,6%-%ID:~49,6% >> "%~dp0安装 ID.txt") else (echo%ID:~0,8%-%ID:~8,7%-%ID:~15,7%-%ID:~22,7%-%ID:~29,7%-%ID:~36,7%-%ID:~43,7%-%ID:~50,7%-%ID:~57,7% >> "%~dp0安装 ID.txt")
@echo%ID% >> "%~dp0安装 ID.txt"
echo.
echo.
echo.安装 ID 已保存,请查看当前目录下的《安装 ID.txt》
echo.
pause
复制代码
这几天又研究了下for语句,终于搞定了。用下面的语句即
:获取 Microsoft Office 安装路径
for /f "delims=\ tokens=5,*" %%a in ('reg query HKLM\SOFTWARE\Microsoft\Office /f "." /k 2^>nul') do (
for /f "skip=1 tokens=2,* delims= " %%b in ('reg query HKLM\SOFTWARE\Microsoft\Office\%%~a\Word\InstallRoot /v Path 2^>nul') do (
set "WordPath=%%~c"
)
)
if defined WordPath (set "WordPath=%WordPath:root\Office16=Office16%") else (
echo 未检测到当前系统安装有 Microsoft Office 软件,请直接关闭或按任意键退出 ......
pause >nul
goto :eof
)
:获取 Microsoft Office 版本
for /f "tokens=4 delims=, " %%i in ('cscript "%WordPath%ospp.vbs" /dstatus') do (set /a n+=1 & if !n! equ 3 set "V=%%i")
if !V! equ 14 set V=2010
if !V! equ 15 set V=2013
if !V! equ 16 set V=2016
if !V! equ 19 set V=2019
复制代码
作者:
caocaofff
时间:
2021-1-14 22:03
简单的判断目录?
%ProgramFiles%\Microsoft Office\Office16
或者
%ProgramFiles(x86)%\Microsoft Office\Office16
作者:
七仙花
时间:
2021-1-21 17:45
caocaofff 发表于 2021-1-14 22:03
简单的判断目录?
%ProgramFiles%\Microsoft Office\Office16
或者
网上找到一段代码。通过读取注册表来查找路径,测试过win10系统下能识别出Office2019
作者:
2010wlm
时间:
2021-1-29 11:44
有意思,很久之前我也会一点点批处理
欢迎光临 无忧启动论坛 (http://wuyou.net/)
Powered by Discuz! X3.3