Execute external program in ruby und wartet auf seine Hinrichtung
Wie starte ich ein externes Programm (wie ein excel-sheet) von ruby und warten, für deren Ausführung resp. Kündigung, bevor Sie fortfahren.
Ich weiß, ich kann starten das excel-sheet mit
system 'start excel "my/path/to/the/sheet"'
aber mit diesem startet nur das Blatt und geht dann weiter.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem, das Sie haben, ist nicht mit Ruby, aber der Befehl start, dieser startet ein anderes Programm und sofort zurückgegeben. Sie brauchen, um machen, dass der Befehl warten Sie excel zu beenden, verwenden Sie die
wait
Flagge:Verwenden Sie nicht starten! Der Befehl system wird das Ergebnis warten. In der Windows-Eingabeaufforderung die start Befehl startet Programme asynchron.
Oder verwenden Sie %x zu, wenn Sie ein array als Ergebnis :
Wenn Sie die start - Befehl in der Befehl, %x warten, bis der Ausgang sowieso..
Wie bereits erwähnt, fallen die "start" bewirkt, dass die Ruby-Skript warten.
Anderen Weg, es zu tun in Ruby ist mit backticks.
Jedoch, Sie darauf hingewiesen, Excel als Beispiel. Wenn Sie eine normale Windows-Eingabeaufforderung eingeben, werden Sie feststellen, dass während
start excel path\to\sheet
öffnet Excel in der Erwägung, dass nurexcel path\to\sheet
nicht. Erhalten Sie eine Fehlermeldung etwa wie "excel" ist kein anerkannter interner oder externer Befehl. Der Weg um dies zu beheben, fügen Sie entweder den Pfad zu Excel in Ihrem Umgebungsvariablen oder fügen Sie den Pfad zu Excel in Ihremsystem()
nennen.(Mit den backticks hier nur meine Präferenz. Ich mag es lieber, denn es ermöglicht die variable einsetzen.)
Dazu wird eine Instanz von Excel, und die Ruby-Skript wartet, bis die Anwendung beendet wurde.