为了删除多个匹配的文件夹,我遵循以下命令-
cd/d "C:\\Jenkins\\jobs\\Test\\htmlreports" && for /D /R %i in (*109*)do rmdir /s /q "%~i"
如果从命令提示符处执行此命令,则它将成功。但是,如果在Jenkins管道中使用bat
执行相同的操作,例如-
script {
bat 'cd/d "C:\\Jenkins\\jobs\\Test\\htmlreports" && for /D /R %i in (*109*)do rmdir /s /q "%~i"'
}
它失败并显示错误-
Error when executing always post condition:
hudson.AbortException: script returned exit code 255
at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.handleExit(DurableTaskStep.java:658)
at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.check(DurableTaskStep.java:604)
at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.run(DurableTaskStep.java:548)
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)
请帮助了解此处可能存在的问题。
答案 0 :(得分:0)
首先,Process exists with ExitCode 255可以帮助您解决有关255个退出代码的问题。
最后,我不知道詹金斯的工作原理,我不使用它们……但是,如果命令
bat 'cd/d "C:\\Jenkins\\jobs\\Test\\htmlreports" && for /D /R %i in (*109*)do rmdir /s /q "%~i"'
是一个cmd呼叫,例如cmd /c cd/d "C:\\Jenkins\\jobs\\Test\\htmlreports" && for /D /R %i in (*109*)do rmdir /s /q "%~i"
,我可能知道出了什么问题:
bat文件不能存储单个百分比。
cmd / c参数不知道您放在此处的代码与“&”之间的区别,即使您使用double&,也可能需要使用^。批处理脚本文件中的命令将为:
cd/d "C:\\Jenkins\\jobs\\Test\\htmlreports" ^& for /D /R %%i in (*109*) do rmdir /s /q "%~i
,然后将代码“ do”加上“)”符号,可能还会在批处理脚本文件中引起错误,但在cmd中不会引起错误。 至少,请验证for的语法是否与您想要的语法相结合。
希望我能帮助您。