如何摆脱.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.txt
path作为参数,以便在自动运行的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""
这导致了
-
/e
…开始时不显示启animation面,也不创build新的工作簿。 -
C:\My Programs\CPU Analysis\data\IOParse.xlsm
…打开这个marco-enabled工作簿文件。 -
-iodumplocation
…尝试在当前工作目录中打开名为-iodumplocation.xlsx
的文件失败。 -
C:\My
…尝试在驱动器C:的根目录中打开名为My.xlsx
的文件失败。 -
Programs\CPU
…在子目录下打开名为CPU.xlsx
的文件的失败尝试当前工作目录的Programs
。 -
Analysis\iodump\065901_iodump.txt""
…尝试在当前工作目录的子目录Analysis\iodump
中打开无效名称为065901_iodump.txt""
的文件失败。
我不能build议一个正确的命令行,因为我不知道-iodumplocation
应该是什么。