Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何基于windows版本编写批处理脚本_Excel_Batch File - Fatal编程技术网

Excel 如何基于windows版本编写批处理脚本

Excel 如何基于windows版本编写批处理脚本,excel,batch-file,Excel,Batch File,我对编写批处理脚本相当陌生,我们的系统刚刚给了我一个小小的曲线球 我们正在购买Windows 10和Office 16的新计算机。我们还有Windows 7和Office 14个人电脑是尚未升级的网络 我目前有一个批处理文件,它在执行时执行xcopy,将服务器上的excel文件与用户本地计算机上相同文件的版本进行检查。如果服务器版本较新,它会复制本地版本,然后打开并运行excel文件 当需要打开并运行文件时,我需要更新批处理以适应两个版本的excel 我可以在windows或excel版本上进行

我对编写批处理脚本相当陌生,我们的系统刚刚给了我一个小小的曲线球

我们正在购买Windows 10和Office 16的新计算机。我们还有Windows 7和Office 14个人电脑是尚未升级的网络

我目前有一个批处理文件,它在执行时执行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
在“开始”行之前,我需要检查机器上的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 do
where/?
获取更多信息。感谢您的输入,我将如何合并实际excel文件的打开。我想让它打开excel文件,而不仅仅是excel程序。@GrahamDredt,我不想回答这样的问题。如果您不知道如何使用命令行用程序打开文件,那么您需要的不仅仅是本网站提供的帮助!我很感激你的帮助,很抱歉你这么想。我原以为这个网站是为了向那些收入较低的人传授知识,但现在看来我已经达到了你的极限,尽管如此,我还是很感谢你抽出时间。我能够根据Campo的帖子让这批人开始工作。我只需要使用
启动Excel
而不是
“C:\ProgramFiles(x86)\Microsoft Office\Office14\Excel.exe”
。这使excel可以不受版本限制地启动。谢谢大家。