开云体育

Locked Execute a Windows Batch File from LogixNG or Script #logixng


 

Team,
How can I execute a .bat file from either LogixNG or Jython script?
--

Many thanks in advance!

Vinny DeRobertis ~ Apex, NC
New York & Hudson Valley RR

Windows 7 Pro / Java 11 / JMRI v5.7.7
Command Station: Digikeijs DR5000.
Booster: Digikeijs DR5033
Interface: Samsung A7 10.4" Tablets/Fully Kiosk.
DCC/DMX Gateway: Pricom LLS.
LocoNet Input Modules: Digikeijs DR4088LN
DCC Output Modules:
Digikeijs DR4018 / Yamorc YD8116.
Sensors: Model Train Technology: DETECTOR-HO.
Turnout Motors: MTB MP1


 

Try this bit of jython

Import java
command = “foo.bat”
argument = “something or blank"
java.lang.Runtime.getRuntime().exec([command, argument])

Bob


On Sep 28, 2024, at 1:50?PM, Vinny DeRobertis via groups.io <vinny.derobertis@...> wrote:

Team,
How can I execute a .bat file from either LogixNG or Jython script?
--

Many thanks in advance!

Vinny DeRobertis ~ Apex, NC
New York & Hudson Valley RR

Windows 7 Pro / Java 11 / JMRI v5.7.7
Command Station: Digikeijs DR5000.
Booster: Digikeijs DR5033
Interface: Samsung A7 10.4" Tablets/Fully Kiosk.
DCC/DMX Gateway: Pricom LLS.
LocoNet Input Modules: Digikeijs DR4088LN
DCC Output Modules:
Digikeijs DR4018 / Yamorc YD8116.
Sensors: Model Train Technology: DETECTOR-HO.
Turnout Motors: MTB MP1

Bob Jacobsen
rgj1927@...


 

Thank you Bob!
Any chance this be done in LogixNG?


 

I guess I can just call the script from LogixNG. That will be fine.


 

Bob, I got the logix NG to call the script that calls the batch file however, the batch file only stays in it's loop for 1 iteration. When I run the batch file outside of JMRI it opens a DOS window and stays in its loop until I close the DOS window. When I call the batch file using the script, the DOS window does not open. The batch file runs and then immediately ends.


 

I don’t know much about Windows, so I’m probably not the one to help with this unfortunately. And the following suggestion might not make sense.

Is there a command that will open another window from the command line? Maybe “cmd.exe”, if I remember correctly?

You could try using that as the “command” in the script, with the batch file name as the “argument” value. That might open the window, then start the batch file.

Or it might not, as JMRI doesn’t start from a command window.

Sorry to not be able to be more helpful.

Bob

On Sep 29, 2024, at 2:31?PM, Vinny DeRobertis via groups.io <vinny.derobertis@...> wrote:

Bob, I got the logix NG to call the script that calls the batch file however, the batch file only stays in it's loop for 1 iteration. When I run the batch file outside of JMRI it opens a DOS window and stays in its loop until I close the DOS window. When I call the batch file using the script, the DOS window does not open. The batch file runs and then immediately ends.

Bob Jacobsen
rgj1927@...


 

I appreciate it, Bob. I'll try it.


 

Well, that did not work.
What about this... how would I call the jython script from the command line? That would solve this for me.


 

...rephrasing, how can I call a jython script x.py from within a windows/DOS batch file?


 

Vinny,

You cannot call a Jython script from outside of the JMRI/Java world.

It would be helpful to know what you are actually trying to do. ?What does the bat file do?

Dave Sand


----- Original message -----
From: Vinny DeRobertis <vinny.derobertis@...>
Subject: Re: [jmriusers] Execute a Windows Batch File from LogixNG or Script #logixng
Date: Sunday, September 29, 2024 7:26 PM

...rephrasing, how can I call a jython script x.py from within a windows/DOS batch file?


 

Vinny,

You can use an indirect notification from Windows using the LogixNG "File as flag" expression which can then run the Jython script. ?See?

Dave Sand


----- Original message -----
From: Dave Sand <ds@...>
Subject: Re: [jmriusers] Execute a Windows Batch File from LogixNG or Script #logixng
Date: Sunday, September 29, 2024 9:14 PM

Vinny,

You cannot call a Jython script from outside of the JMRI/Java world.

It would be helpful to know what you are actually trying to do. ?What does the bat file do?

Dave Sand


----- Original message -----
From: Vinny DeRobertis <vinny.derobertis@...>
Subject: Re: [jmriusers] Execute a Windows Batch File from LogixNG or Script #logixng
Date: Sunday, September 29, 2024 7:26 PM

...rephrasing, how can I call a jython script x.py from within a windows/DOS batch file?



 

开云体育

Vinny,

Can you show us the batch file you are trying to run?

Daniel

On 2024-09-29 20:31, Vinny DeRobertis wrote:

Bob, I got the logix NG to call the script that calls the batch file however, the batch file only stays in it's loop for 1 iteration. When I run the batch file outside of JMRI it opens a DOS window and stays in its loop until I close the DOS window. When I call the batch file using the script, the DOS window does not open. The batch file runs and then immediately ends.


 

Attached .bat renamed.txt
?
It takes a screenshot every 4 seconds.


 

When I run it from windows it continues to take a screen shot every 4 seconds until I close the DOS window but when I run it from Bob's script it takes 1 screen shot and ends.


 

It’s a bit brute force, but you could write a JMRI script or LogixNG that calls your .bat file every four seconds.

Bob

On Sep 30, 2024, at 9:50?AM, Vinny DeRobertis via groups.io <vinny.derobertis@...> wrote:

When I run it from windows it continues to take a screen shot every 4 seconds until I close the DOS window but when I run it from Bob's script it takes 1 screen shot and ends.

Bob Jacobsen
rgj1927@...


 

Good idea... a little MORE brute force won't hurt.


 

Am 30.09.2024 um 15:50 schrieb Vinny DeRobertis:
When I run it from windows it continues to take a screen shot every 4 seconds until I close the DOS window but when I run it from Bob's script it takes 1 screen shot and ends.
I get the screenshots until I quit JMRI.

My script:
import java
java.lang.Runtime.getRuntime().exec(["C:/temp/screenshot.bat", ""])

I'm running Windows 10.

Klaus


 

update, I modified the .bat to only take 1 screen shot, not loop every 4 secs.
?
I got rid of the LogixNG and I'm just using a Jython script now.
The script cycles through all of my panels?and for each panel, it calls the .bat to take the screenshot.
This works great!
?
Now with one press of a button I can get a .jpg of each panel that I can copy over to my phone for review when I'm away from the layout.
Also, I plan to use this to compile a single .PDF that shows all of my panels so that I can easily share with others.
Attached script is in its infancy as it only calls 5 of my 58 panels.
?
I know there is a slicker way to loop but I am not that skilled in Jython.
Thanks again!
?


 

Vinny,

Here is a sample of getting all of the frames and then checking for the first part of the title.

import java
import jmri

for frame in jmri.util.JmriJFrame.getFrameList():
??? title = frame.getTitle()
??? if title[:6] == 'Script':
??????? print 'frame = {}'.format(frame)


Dave Sand


----- Original message -----
From: Vinny DeRobertis <vinny.derobertis@...>
Subject: Re: [jmriusers] Execute a Windows Batch File from LogixNG or Script #logixng
Date: Wednesday, October 02, 2024 1:44 PM

update, I modified the .bat to only take 1 screen shot, not loop every 4 secs.
?
I got rid of the LogixNG and I'm just using a Jython script now.
The script cycles through all of my panels?and for each panel, it calls the .bat to take the screenshot.
This works great!
?
Now with one press of a button I can get a .jpg of each panel that I can copy over to my phone for review when I'm away from the layout.
Also, I plan to use this to compile a single .PDF that shows all of my panels so that I can easily share with others.
Attached script is in its infancy as it only calls 5 of my 58 panels.
?
I know there is a slicker way to loop but I am not that skilled in Jython.
Thanks again!
?

Attachments:
  • NY_HV Panel Sequence Screen Capture.py