从批处理文件中检查办公室许可证状态

Check the office License Status from batch file

我正在制作一个批处理文件,可以检查您的 office 2013 是否有许可证。

for /f "tokens=3 delims=: " %%a in (
'cscript "%ProgramFiles%\Microsoft Office\Office15\OSPP.VBS" /dstatus ^| find "License Status:"' 

) do set "licenseStatus=%%a"
if /i "%licenseStatus%"=="--- LICENSED ---" (
Echo I am Licensed
Pause
EXIT
) Else (
Echo I am NOT Licensed
Pause
EXIT
)

但每次我 运行 这段代码都会以我未获得许可的方式返回。我自己检查了 运行 宁 ospp.vbs 脚本它说 ---License---。我想知道我什么时候错了。在这个脚本的路径中考虑它。我说的是 (%ProgramFiles%\Microsoft Office\Office15\OSPP.VSB /Dstatus) 您能给我的任何帮助都希望得到很大的帮助。感谢您抽出时间来阅读。

您需要将 /I 标志与 find 一起使用。或者,您需要搜索字符串 "LICENSE STATUS"。现在,您正在对 "License Status," 进行区分大小写的搜索,它在 OSPP.vbs.

的输出中的任何位置都没有出现准确的大写字母

此外,您需要去掉“--- LICENSED ---”中的空格,因为实际输出没有空格。

@echo off

:: The below directory is for users with a 64-bit operating system
:: 32-bit users can find the script in "%ProgramFiles%"\Microsoft Office\Office15\OSPP.vbs"
for /f "tokens=3 delims= " %%a in ('cscript "%ProgramFiles(x86)%\Microsoft Office\Office15\OSPP.VBS" /dstatus ^| find /i "License Status:"') do (
    set "licenseStatus=%%a"
)

if /i "%licenseStatus%"=="---LICENSED---" (
    Echo I am Licensed
) Else (
    Echo I am NOT Licensed
)

pause