|
本帖最后由 七仙花 于 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
复制代码
|
|