为什么工作批处理命令在重定向时只能部分工作



我正在编写一个批处理脚本,其中包括打开一个启用宏的excel文件(.xlsm):

2>nul (
  >>%CSF% echo off
)  && (start "cmdTitle" /B excel %CSF% /e /automation) || (echo could not open)

%CSF%是指excel文件的完整路径的变量,即"C:\test\testfile.xlsm"(包括目录/文件名中可能有空格的情况下的引号)

此代码检查文件是否已锁定以进行编辑,如果未锁定则打开文件(启动命令),否则echos无法打开。

如果我从windows资源管理器打开文件,或者在批处理脚本中只运行以下操作,文件会很好地打开。

set CSF="C:Test FolderTest.xlsm"
start "cmdTitle" /B excel %CSF% /e /automation

但是,在检查锁定文件时运行批处理文件总是会导致excel说:"excel在filename.xlsm中发现不可读的内容。是否要恢复此工作簿的内容?"这会从文件中删除宏。

编辑:除了文件未正确打开外,任何在excel打开时执行某些操作的excel加载项,例如删除和重新创建命令栏,也无法加载:"Addin.xla无法访问"

是什么导致了单独运行命令和重定向时行为的差异?TIA

在十六进制查看器中检查文件的末尾,如果有任何内容,请查看末尾附加了什么。

您发布的代码运行良好(也与excel命令相呼应)。其他一些代码可能是问题所在。

最新更新