Как уже говорилось, удаление "start" заставит скрипт Ruby ждать.
system("notepad.exe")
Еще один способ сделать это в Ruby - использовать обратную галочку.
`notepad.exe` # Same effect. Will also accept #{} variable insertion
Однако в качестве примера вы указали Excel. Если вы вызовете обычную командную строку Windows, вы заметите, что пока start excel path\to\sheet
откроет Excel, а просто excel path\to\sheet
- нет. Вы получите сообщение о том, что «excel» не является распознанной внутренней или внешней командой. Чтобы это исправить, нужно либо добавить путь к Excel в свои переменные среды , либо включить путь к Excel в вызове system()
.
EXCEL = File.join("C:", "Program Files",
"Microsoft Office", "OFFICE11", "excel.exe")
`"#{EXCEL}" "path\to\sheet"`
(Использование обратных галочек здесь - только мое предпочтение. Я предпочитаю это, так как это позволяет вставлять переменные.)
Это вызовет экземпляр Excel, а скрипт Ruby будет ожидать завершения работы приложения.