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

时间:2014-07-11 12:49:27

标签: excel batch-file command-line

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

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.txt路径作为excel book的参数,以便在其自动运行的宏中使用。宏正确运行并且文件已正确修改,但运行命令时出现以下错误:

First Error

Second Error

Third Error

Fourth Error

如何摆脱错误?

答案

正如在接受的答案中所提到的,由于我编写命令的方式,excel试图打开多个文件。我解决这个问题的方法是创建一个文本文件来保存我试图传递给宏的路径。宏将打开文本文件并读取路径以获取所需的路径。这比尝试从命令行获取路径更清晰,更容易。

1 个答案:

答案 0 :(得分:1)

Description of the startup switches for Excel列出并描述了可用于启动Excel的可选开关。此页面上列出了/e由Microsoft编写。但是-iodumplocation绝对不是Excel的命令行开关。

在双引号字符串中使用双引号在命令行上总是出错并且结果是不可预测的,这取决于命令行解析器的代码,请参阅Why double quotes should be always only at beginning and end of an argument 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 ...在没有显示启动屏幕且没有创建新工作簿的情况下启动。
  2. C:\My Programs\CPU Analysis\data\IOParse.xlsm ...打开此启用marco的工作簿文件。
  3. -iodumplocation ...尝试在当前工作目录中打开名为-iodumplocation.xlsx的文件失败。
  4. C:\My ...尝试在驱动器C的根目录中打开名为My.xlsx的文件失败:
  5. Programs\CPU ...尝试在当前工作目录的子目录CPU.xlsx中打开名为Programs的文件失败。
  6. Analysis\iodump\065901_iodump.txt"" ...尝试在当前工作目录的子目录065901_iodump.txt""中打开名称为Analysis\iodump的文件失败。
  7. 我无法建议正确的命令行,因为我不知道-iodumplocation应该是什么。