如何摆脱.bat文件中不影响脚本结果的错误?

我有一个应用程序调用下面的命令:

C:\Users\212340141>"C:\Program Files\Microsoft Office\Office14\excel.exe" /e "C: \My Programs\CPU Analysis\data\IOParse.xlsm" "-iodumplocation"C:\My Programs\CPU Analysis\iodump\065901_iodump.txt"" 

当我运行这个命令时,它会打开excel,传入C:\My Programs\CPU Analysis\iodump\065901_iodump.txtpath作为参数,以便在自动运行的macros中使用。 macros运行正常,文件被正确修改,但运行命令时出现以下错误:

第一个错误

第二个错误

第三个错误

第四个错误

我怎样才能摆脱错误?

回答

正如在接受的答案中提到的,由于我如何编写命令,excel试图打开多个文件。 我解决这个问题的方式是我创build了一个文本文件来保存我试图传递给macros的path。 macros将打开文本文件并读取path以获取所需的path。 这比试图从命令行获取path更简单,更简单。

Excel的启动开关说明列出并介绍可用于启动Excel的可选开关。 /e被列在这个由微软写的页面上。 但是-iodumplocation绝对不是Excel的命令行开关。

在双引号string中使用双引号总是在命令行中出现错误,而根据命令行parsing器的代码,结果是不可预知的,请参阅答案为什么双引号总是只在参数string的开头和结尾?

所使用的命令行显然被Excel解释为

 "C:\Program Files\Microsoft Office\Office14\excel.exe" /e "C:\My Programs\CPU Analysis\data\IOParse.xlsm" "-iodumplocation" C:\My Programs\CPU Analysis\iodump\065901_iodump.txt"" 

这导致了

  1. /e …开始时不显示启animation面,也不创build新的工作簿。
  2. C:\My Programs\CPU Analysis\data\IOParse.xlsm …打开这个marco-enabled工作簿文件。
  3. -iodumplocation …尝试在当前工作目录中打开名为-iodumplocation.xlsx的文件失败。
  4. C:\My …尝试在驱动器C:的根目录中打开名为My.xlsx的文件失败。
  5. Programs\CPU …在子目录下打开名为CPU.xlsx的文件的失败尝试当前工作目录的Programs
  6. Analysis\iodump\065901_iodump.txt"" …尝试在当前工作目录的子目录Analysis\iodump中打开无效名称为065901_iodump.txt""的文件失败。

我不能build议一个正确的命令行,因为我不知道-iodumplocation应该是什么。