У меня есть следующий скрипт run.vbs
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
-- Если да, вы можете просто создать полный путь в кавычках самостоятельно. - person krlmlr   schedule 27.01.2016Rexe = """C:\Users[user name]\Desktop\foo bar\R-Portable\App\R-Portable\bin\Rscript.exe"""
, я все равно получу ту же ошибку. Я не знаю, правильный ли это способ. - person O. Jerrari   schedule 27.01.2016