Как избавиться от ошибок в.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 в качестве параметра для книги Excel для использования в макросах, которые она запускает автоматически. Макросы работают правильно, и файл изменяется правильно, но при выполнении команды я получаю следующие ошибки:

Как я могу избавиться от ошибок?

Ответ

Как упоминалось в принятом ответе, excel пытался открыть несколько файлов из-за того, как я написал команду. Как я решил это, я создал текстовый файл, чтобы сохранить путь, который я пытался передать в макрос. Макрос откроет текстовый файл и прочитает путь, чтобы получить необходимый путь. Это намного проще и проще, чем пытаться получить путь из командной строки.

1 ответ

Описание переключателей запуска для списков Excel и описание дополнительных переключателей, которые можно использовать при запуске Excel. /e указан на этой странице, написанной Microsoft. Но -iodumplocation определенно не является командной строкой для Excel.

Использование двойных кавычек в строке с двойными кавычками всегда является ошибкой в командной строке, и результат непредсказуем в зависимости от кода синтаксического анализа командной строки, см. Ответ о том, почему двойные кавычки должны всегда быть только в начале и конце строки аргумента?

Используемая командная строка, очевидно, интерпретируется 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... неудачная попытка открыть файл с именем My.xlsx в корне диска C :.
  5. Programs\CPU... неудачная попытка открыть файл с именем CPU.xlsx в подкаталоге Programs текущего рабочего каталога.
  6. Analysis\iodump\065901_iodump.txt""... неудачная попытка открыть файл с недопустимым именем 065901_iodump.txt"" в подкаталоге Analysis\iodump текущего рабочего каталога.

Я не могу предложить правильную командную строку, поскольку я не знаю, что -iodumplocation должно быть.

licensed under cc by-sa 3.0 with attribution.