Юля на Windows. Как передать параметры командной строки в исполняемый файл - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу вызвать исполняемый файл от Джулии через Base.run (задокументировано здесь) и передать параметры командной строки этому исполняемому файлу, но я не могу понять, как это сделать.В моем конкретном примере исполняемый файл - Блокнот ++ , а параметры командной строки -

-alwaysOnTop -nosession

Этот пример кода работает, но не передает параметры командной строки:

function open_file_in_notepadpp()
    exepath =   "C:/Program Files (x86)/notepad++/notepad++.exe"   #Default location on 64 bit Windows
    command_line_options = "-alwaysOnTop -nosession "
    filetoopen = "c:/temp/foo.txt"
    Base.run(`$exepath $filetoopen`, wait = false)   
end

Я пытался включить command_line_options изрядное количество способов использования обратных кавычек, двойных кавычек и т. Д., Но безрезультатно, например, ни одна из строк ниже не работает:

Base.run(`$exepath $filetoopen`, `$command_line_options`,wait = false)
Base.run(`$exepath $command_line_options $filetoopen`,wait = false)

В командной строке Windows правильно работает следующее:

"C:/Program Files (x86)/notepad++/notepad++.exe" -alwaysOnTop -nosession "c:/temp/foo.txt"

Может кто-нибудь объяснить, что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Ответ crstnbr был верным, но он не смог проверить на своей машине. Вот исправленный код:

function open_file_in_notepadpp()
    exepath =   "C:/Program Files (x86)/notepad++/notepad++.exe"   #Location if one follows the defaults in the notepad++ installer on 64 bit Wndows
    command_line_options = ["-alwaysOnTop", "-nosession"]          #Use an array to prevent the options being quoted 
    filetoopen = "c:/temp/foo.txt"

    Base.run(`$exepath $filetoopen $command_line_options`,wait = false)

end
0 голосов
/ 11 сентября 2018

Если в команду подставить строку с пробелами, она будет заключена в кавычки. Следовательно, ваши аргументы командной строки будут заключены в кавычки, и вы получите

julia> `$exepath $filetoopen $command_line_options`
`'C:/Program Files (x86)/notepad++/notepad++.exe' c:/temp/foo.txt '-alwaysOnTop -nosession '`

Я думаю, что тебе действительно нужно

julia> command_line_options = ["-alwaysOnTop", "-nosession"]
2-element Array{String,1}:
 "-alwaysOnTop"
 "-nosession"

julia> `$exepath $filetoopen $command_line_options`
`'C:/Program Files (x86)/notepad++/notepad++.exe' c:/temp/foo.txt -alwaysOnTop -nosession`

Запуск последнего с run должен работать. К сожалению, я не могу проверить это на своей машине.

...