Вызов оболочки против Wscript.Оболочка, использующая cmd.exe

#vba #shell #cmd

#vba #оболочка #cmd

Вопрос:

Я использую следующий код, и он работает нормально.

 path = "cd C:Program Filesbin amp; AppX File.txt"

Call Shell("cmd.exe /k " amp; path, vbNormalFocus)
  

Однако мне приходится использовать waitOnreturn, поэтому я перешел на следующий код, и он больше не работает.

 path = "cd C:Program Filesbin amp; AppX File.txt"
Dim wsh As Object
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Set wsh = VBA.CreateObject("WScript.Shell")
wsh.Run ("cmd.exe /k " amp; path amp; ", windowStyle, waitOnReturn") 
  

Ошибка «не удалось прочитать файл»File.txt «: нет такого файла или каталога «, но файл есть.
Имя файлаFile.txt.
Имя программы — AppX. Программа позволяет мне запускать файл с помощью cmd.exe если я сначала изменю направление на путь AppX. Затем, чтобы запустить файл с помощью cmd.exe Мне нужно запустить «AppX File.txt »
Есть ли что-то, что работает с WScript.Код оболочки

Комментарии:

1. 1 и true являются аргументами run метода, а не частью командной строки

2. Спасибо, я изменил их, но у меня все та же ошибка.

3. @MCND Я думаю, я понял, что вы имеете в виду, я меняю его на wsh.Run «cmd.exe /k » amp; path, WindowStyle, ожидание возврата . Теперь это работает, спасибо

Ответ №1:

Поскольку в имени файла есть пробелы, вам необходимо заключить путь в кавычки. Так что что-то вроде:

 path = "cd "C:Program Filesbin amp; AppX File.txt""
  

Комментарии:

1. Спасибо, к сожалению, это не сработало. Имя файла — это только File.txt . В ней нет места. Я отредактировал свой вопрос.

Ответ №2:

Я изменил

   wsh.Run ("cmd.exe /k " amp; path amp; ", windowStyle, waitOnReturn")
  

Для

   wsh.Run "cmd.exe /k " amp; path, windowStyle, waitOnReturn
  

и сейчас это работает