У меня есть followaing run.vbs сценарийRun Rscript.exe с VBScript и пробелы в пути
Rexe = "R-Portable\App\R-Portable\bin\Rscript.exe"
Ropts = "--no-save --no-environ --no-init-file --no-restore --no-Rconsole "
RScriptFile = "runShinyApp.R"
Outfile = "ShinyApp.log"
startChrome = "GoogleChromePortable\App\Chrome-bin\chrome.exe --app=http://127.0.0.1:9999"
strCommand = Rexe & " " & Ropts & " " & RScriptFile & " 1> " & Outfile & " 2>&1"
intWindowStyle = 0 ' Hide the window and activate another window.'
bWaitOnReturn = False ' continue running script after launching R '
' the following is a Sub call, so no parentheses around arguments'
CreateObject("Wscript.Shell").Run strCommand, intWindowStyle, bWaitOnReturn
WScript.Sleep 1000
CreateObject("Wscript.Shell").Run startChrome, intWindowStyle, bWaitOnReturn
Он работает очень хорошо в большинстве случаев, за исключением, когда пользователь помещает скрипт run.vbs в папке с пробелами от его имени: напр. если run.vbs находится в папке «foo bar», пользователь получает ошибку: «C: \ Users \ [имя пользователя] \ Desktop \ foo» не распознается как внутренняя команда ...
Я не понимаю почему Rscript.exe ищет абсолютный путь перед запуском, даже если он вызывается из его родительского каталога, используя относительный путь.
Я слышал о двойные кавычки решения, используя абсолютный путь, но это не похоже на работу с EXE-скриптов (это делает, хотя с .bat и .cmd)
Спасибо за любую помощь!
ли рабочий каталог правильно, когда ваш скрипт выполняется? 'MsgBox CreateObject (« Wscript.Shell »). CurrentDirectory' - Если да, вы можете просто построить цитируемый полный путь самостоятельно. – krlmlr
@krlmlr На самом деле я новичок в vbs, и даже если я заменил Rexe на 'Rexe =" "" C: \ Users [имя пользователя] \ Desktop \ foo bar \ R-Portable \ App \ R-Portable \ bin \ Rscript.exe "" " Я все еще получаю ту же ошибку. Я не знаю, правильно ли это сделать. –
@krlmlr У меня был более глубокий взгляд на него, и кажется, что решение с двойной кавычкой не работает с .exe-файлами (хотя и с .bat и .cmd). Я редактировал сообщение –