executeCommandLine delete files

Hello, OH2 in Windows, I need to delete some files in a folder, but executeCommandLine(“del…”) not works.

executeCommandLine("del C:\\openHAB2\\userdata\\snaps\\*.jpg")

logs:

2019-01-24 15:30:19.852 [ERROR] [lipse.smarthome.io.net.exec.ExecUtil] - couldn’t execute commandLine ‘del C:\openHAB2\userdata\snaps*.jpg’
java.io.IOException: Cannot run program “del”: CreateProcess error=2, The specified file could not be found
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) ~[?:?]
at java.lang.Runtime.exec(Runtime.java:620) ~[?:?]
at java.lang.Runtime.exec(Runtime.java:450) ~[?:?]
at java.lang.Runtime.exec(Runtime.java:347) ~[?:?]
at org.eclipse.smarthome.io.net.exec.ExecUtil.executeCommandLine(ExecUtil.java:63) ~[?:?]
at org.eclipse.smarthome.model.script.actions.Exec.executeCommandLine(Exec.java:43) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1086) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1061) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1047) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
at org.eclipse.smarthome.model.script.runtime.internal.engine.ScriptImpl.execute(ScriptImpl.java:82) ~[?:?]
at org.eclipse.smarthome.model.rule.runtime.internal.engine.RuleEngineImpl.lambda$2(RuleEngineImpl.java:341) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.io.IOException: CreateProcess error=2, Impossibile trovare il file specificato
at java.lang.ProcessImpl.create(Native Method) ~[?:?]
at java.lang.ProcessImpl.(ProcessImpl.java:386) ~[?:?]
at java.lang.ProcessImpl.start(ProcessImpl.java:137) ~[?:?]
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ~[?:?]
… 33 more

The path is correct and from cmd works.

That seems to have lost a backslash?

I run OH on Windows myself, and handle some snapshots. I looked to see what I’d done about file deletions, and it turns out I’d made a little batch file in C:\\openhab2\\conf\\scripts to do it. Can’t remember why, permissions maybe.

For the backslash it seams to be an error in this forum:

I’ll try a batch as you suggest.

Had a closer look; yep it’s just a rename of windows del really, so I guess I must have run into some access control problem.

delfile.bat

@rem  a tool to delete a file
@rem call with params PATH\ NAME

if x%1x==xx goto Nop
if x%2x==xx goto Nop

del %1%2
exit

:Nop
  echo error no param 1 or 2
  pause>nul
  exit

example call
results=executeCommandLine("C:\\openhab2\\conf\\scripts\\delfile.bat C:\\openhab2\\conf\\html\\ channel01.jpg" , 5000)

1 Like

This occurs because del is not a program.

The right way to do this is cmd /c del c:\openHAB2\userdata\snaps\*.jpg"

1 Like

Duh, of course!! :crazy_face: Thankyou