【问题标题】:How to find Microsoft Office path from command line如何从命令行查找 Microsoft Office 路径
【发布时间】:2014-03-18 06:52:49
【问题描述】:
我想使用命令行来定位 MS office 的路径。它应该返回类似C:\Program Files (x86)\Microsoft Office\Office14 的内容,这可能对不同的用户有所不同。
尝试使用:
where WINWORD.EXE
INFO: Could not find files for the given pattern(s).
for %i in (WINWORD.EXE) do @echo. %~$PATH:i
No output
感谢您的帮助
【问题讨论】:
标签:
windows
batch-file
command-line
ms-office
【解决方案1】:
一个起点是应用程序注册的注册表项
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WINWORD.EXE"
【解决方案2】:
你可以试试这个命令来获取winword.exe的完整可执行路径:
get-childitem "C:\Program Files*\Microsoft Office" -recurse | where {$_.Name -eq "winword.exe"} | select -first 1 | % { $_.FullName }
【解决方案3】:
搜索注册表然后搜索文件并将路径输出为字符串的功能。 (以“EXE”为Arg)
WHERE 很棒,但速度很慢。我发现查询注册表更快,但不太可靠,所以我将这两个想法组合成一个函数,如下所示:
app_path_func.cmd:
@ECHO OFF
CLS
FOR /F "skip=2 tokens=1,2* USEBACKQ" %%N IN (`reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\%~1" /t REG_SZ /v "Path"`) DO (
IF /I "%%N" == "Path" (
SET wherepath=%%P%~1
GoTo Found
)
)
FOR /F "tokens=* USEBACKQ" %%F IN (`where.exe %~1`) DO (
SET wherepath=%%F
GoTo Found
)
FOR /F "tokens=* USEBACKQ" %%F IN (`where.exe /R "%PROGRAMFILES%" %~1`) DO (
SET wherepath=%%F
GoTo Found
)
FOR /F "tokens=* USEBACKQ" %%F IN (`where.exe /R "%PROGRAMFILES(x86)%" %~1`) DO (
SET wherepath=%%F
GoTo Found
)
FOR /F "tokens=* USEBACKQ" %%F IN (`where.exe /R "%WINDIR%" %~1`) DO (
SET wherepath=%%F
GoTo Found
)
:Found
SET %2=%wherepath%
:End
测试:
@ECHO OFF
CLS
CALL "app_path_func.cmd" WINWORD.EXE PROGPATH
ECHO %PROGPATH%
PAUSE
结果:
C:\Program Files (x86)\Microsoft Office\Office15\WINWORD.EXE
Press any key to continue . . .
https://www.freesoftwareservers.com/display/FREES/Find+Executable+via+Batch+-+Microsoft+Office+Example+-+WINWORD+-+Find+Microsoft+Office+Path