我刚开始编写批处理脚本,我们的系统刚刚给我抛出了一个曲线球。
我们正在获得配备Windows 10和Office 16的新计算机。我们还拥有Windows 7和Office 14 PC,它们是尚未升级的网络。
我目前有一个批处理文件,该文件在执行时会执行xcopy,以对照用户本地计算机上同一文件的版本来检查服务器上的excel文件。如果服务器版本较新,它将复制本地版本,然后打开并运行excel文件。
当需要打开并运行文件时,我需要更新批处理以适应两个版本的excel。
当它们结合在一起时,我可以在Windows或excel版本上进行检查,但是我愿意采用哪种方法更可靠。
我正在与WMIC一起玩,它可以可靠地返回我们计算机上的Windows版本。我从网上研究中尝试了其他脚本,但这些脚本无法正常运行。
这是我当前的代码:
set "source=\\s001\FOLDER\EXCELFILE TOOL.xlsm"
set "target=C:\Apps\EXCELFILE TOOL PROGRAM\"
xcopy "%source%" "%target%" /y /d /h /k /r
START "" "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.exe" /e "%target%\EXCELFILE TOOL.xlsm"
EXIT
在“ START”行之前,我需要检查计算机上的Windows或Office版本,然后将start修改为以下两个选项之一:
选项1
START "" "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.exe" /e "%target%\EXCELFILE TOOL.xlsm"
选项2
START "" "C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.exe" /e "%target%\EXCELFILE TOOL.xlsm"
任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
如果您只想启动Excel
,则无需搜索目录。
一旦安装Excel
,将在以下位置创建注册表子项:
"[HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER]\Software\Microsoft\Windows\CurrentVersion\App Paths"
最有可能的名字:
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Excel.exe"
Default
值数据包含指向应用程序的标准路径。
使用此键下的条目,只需输入应用程序名称即可运行它:
Start Excel.exe
REG_SZ
数据条目可以带有或不带有.exe
扩展名。
(如果需要,ShellExecuteEx函数在搜索“应用路径”子项时会添加扩展名)。
因此,您可以简单地使用:
Start Excel
如果使用大多数注释中建议的方法,则需要使用Excel.exe
作为搜索掩码的一部分!
下面的示例利用附加的For
循环,以允许同时检入Program Files
和Program Files (x86)
@For %%A In ("%ProgramFiles%" "%ProgramFiles(x86)%" 2^>Nul
) Do @For /F "Delims=" %%B In ('Where /R %%A Excel.exe 2^>Nul'
) Do @Start "" "%%~B"
如果您确定已安装的版本始终安装到Program Files (x86)
,那么您当然可以忽略外部循环。
@For /F "Delims=" %%A In ('Where /R "%ProgramFiles(x86)%" Excel.exe 2^>Nul'
) Do @Start "" "%%~A"
如果您不希望保留不超过80
个字符的行,则上述两个示例可以保留为一行。