Excel 如何基于windows版本编写批处理脚本
我对编写批处理脚本相当陌生,我们的系统刚刚给了我一个小小的曲线球 我们正在购买Windows 10和Office 16的新计算机。我们还有Windows 7和Office 14个人电脑是尚未升级的网络 我目前有一个批处理文件,它在执行时执行xcopy,将服务器上的excel文件与用户本地计算机上相同文件的版本进行检查。如果服务器版本较新,它会复制本地版本,然后打开并运行excel文件 当需要打开并运行文件时,我需要更新批处理以适应两个版本的excel 我可以在windows或excel版本上进行检查,因为它们是结合在一起的,但我对任何更可靠的方法都持开放态度 我在玩WMIC,它在我们的机器上可靠地返回windows版本。我在网上尝试了我研究中的其他脚本,但它们并没有发挥我所希望的作用 这是我目前的代码:Excel 如何基于windows版本编写批处理脚本,excel,batch-file,Excel,Batch File,我对编写批处理脚本相当陌生,我们的系统刚刚给了我一个小小的曲线球 我们正在购买Windows 10和Office 16的新计算机。我们还有Windows 7和Office 14个人电脑是尚未升级的网络 我目前有一个批处理文件,它在执行时执行xcopy,将服务器上的excel文件与用户本地计算机上相同文件的版本进行检查。如果服务器版本较新,它会复制本地版本,然后打开并运行excel文件 当需要打开并运行文件时,我需要更新批处理以适应两个版本的excel 我可以在windows或excel版本上进行
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
在“开始”行之前,我需要检查机器上的windows或office版本,然后将开始修改为以下两个选项之一:
选择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"
非常感谢您的帮助,谢谢 如果您只是想启动
Excel
,则不需要搜索目录
安装Excel
后,将在以下位置创建注册表子项:
“[HKEY_本地_机器| HKEY_当前_用户]\Software\Microsoft\Windows\CurrentVersion\App路径”
最有可能命名为:
“HKEY\U LOCAL\U MACHINE\Software\Microsoft\Windows\CurrentVersion\App Path\Excel.exe”
其中,默认值
值数据保存到应用程序的完全限定路径
使用此键下的条目,只需输入应用程序名称即可运行:
启动Excel.exe
REG_SZ
数据项可以与其.exe
扩展名一起使用,也可以不使用。(如有必要,ShellExecuteEx函数在搜索应用程序路径子键时添加扩展名) 因此,您可以简单地使用:
启动Excel
如果在大多数评论中使用建议的方法,那么您需要使用
Excel.exe
作为搜索掩码的一部分
下面的示例使用附加的For
循环,以允许同时检入程序文件
和程序文件(x86)
“%ProgramFiles%”“%ProgramFiles(x86)%”中的%%A的@2^>Nul
)Do@For/F“Delims=“%%B In('Where/R%%A Excel.exe 2^>Nul'
)执行@Start“”“%%~B”
如果您确定安装的版本总是安装到程序文件(x86)
,那么您当然可以忽略外部循环
@For/F“Delims=“%%A In('Where/R”%ProgramFiles(x86)%”Excel.exe 2^>Nul'
)执行@Start“”“%%~A”
以上两个示例可以保留为一行,如果您没有在维护不超过
80
个字符的行时进行交互。我不明白Windows版本在哪里发挥作用?为什么不直接执行where/R“c:\Program Files”excel.exe
@Squashman我们正在部署新的PC,这些PC将Windows 10和Office 2016安装为共享映像。如果用户在Windows 10上,他们也在Office 2016上。如果用户在Windows 7上,则他们在Office 2013上。windows版本只是检查要调用哪个版本的excel的另一种方法。如果我能让它检查excel的版本并启动相应的脚本,我就不必担心windows的版本了。@GerhardBarnard您能解释一下/R在这个例子中做了什么吗?它是我问题的解决方案,谢谢!它将递归搜索文件并返回找到的路径。从cmdline dowhere/?
获取更多信息。感谢您的输入,我将如何合并实际excel文件的打开。我想让它打开excel文件,而不仅仅是excel程序。@GrahamDredt,我不想回答这样的问题。如果您不知道如何使用命令行用程序打开文件,那么您需要的不仅仅是本网站提供的帮助!我很感激你的帮助,很抱歉你这么想。我原以为这个网站是为了向那些收入较低的人传授知识,但现在看来我已经达到了你的极限,尽管如此,我还是很感谢你抽出时间。我能够根据Campo的帖子让这批人开始工作。我只需要使用启动Excel
而不是“C:\ProgramFiles(x86)\Microsoft Office\Office14\Excel.exe”
。这使excel可以不受版本限制地启动。谢谢大家。