在Jenkins中的两个批处理命令行之间添加超时

时间:2015-08-31 09:22:04

标签: batch-file jenkins

这是我想用Jenkins启动的代码:

start cmd.exe /k "node "C:\Program Files\Appium\node_modules\appium\bin\appium.js" -a 127.0.0.1 -p 4723"
ping 127.0.0.1 -n 30 > nul
C:\path\NUnit-2.6.4\NUnit-2.6.4\bin\nunit-console.exe C:\path\NUnit-2.6.4\NUnit-2.6.4\bin\apk\UnitTestProject1.dll

这是我每次尝试暂停时得到的错误:

"ERROR: Input redirection is not supported, exiting the process immediately."

timeout /T 60sleep 60

相同的错误

根据this post,超时在非交互式脚本中不起作用。

如何在我的情况下添加暂停?

为Will Ryan编辑:

我试试这个:

enter image description here

构建工作正常,但测试持续时间仅为0.5秒,暂停没有做任何事情

enter image description here

控制台输出是:

C:\Program Files\Jenkins\jobs\ZFAIL\workspace>echo "--" 
"--"

C:\Program Files\Jenkins\jobs\ZFAIL\workspace>PING 1.1.1.1 -n 1 -w 30000  1>NUL 

C:\Program Files\Jenkins\jobs\ZFAIL\workspace>echo "++" 
"++"

C:\Program Files\Jenkins\jobs\ZFAIL\workspace>exit 0 
Finished: SUCCESS

6 个答案:

答案 0 :(得分:30)

我认为您可以在执行Windows批处理命令中使用以下命令(将等待100秒):

waitfor SomethingThatIsNeverHappening /t 100 

这将返回一个错误,可能会破坏您的构建。为避免这种情况,请重定向错误输出:

waitfor SomethingThatIsNeverHappening /t 100 2>NUL

答案 1 :(得分:8)

您可以使用:

PING 1.1.1.1 -n 1 -w 30000 >NUL

这发送一次ping尝试并等待30秒以进行响应。不确定为什么你得到"错误:不支持输入重定向,立即退出进程。"消息,但我会定期主动使用上面的命令。

答案 2 :(得分:2)

如果您想摆脱Yauheni Basalai的答案中的错误消息,请尝试通过添加> nul 2>& 1

将stderr发送到stdout
waitfor SomethingThatIsNeverHappening /t 100 >nul 2>&1

信用额转到http://brisray.com/computers/batch-delay.htm

答案 3 :(得分:0)

我遇到了类似的问题,VSTS"命令行"使用cmd shell的实用程序(v 2. *),我使用了以下内容(来自提升的PowerShell会话):

Add-Content c:\windows\sleep.cmd "call powershell -NoProfile -ExecutionPolicy ByPass -command sleep %1"

答案 4 :(得分:0)

关于原始的PING方法

我认为-w选项仅在没有响应时才生效。从Wikipedia 1.1.1.1开始是“免费域名系统...”。您应为主机提供一个IP地址,该IP地址应不在线或未响应ping请求。像127.x.x.x这样的地址都是afaik回送地址,总是可以回答。

>nslookup 1.1.1.1
....
Name:    one.one.one.one
Address:  1.1.1.1

>ping 1.1.1.1

Ping wird ausgeführt für 1.1.1.1 mit 32 Bytes Daten:
Antwort von 1.1.1.1: Bytes=32 Zeit=6ms TTL=58
...

至于贷方http://brisray.com/computers/batch-delay.htm

@@@@

对于不存在的地址(例如1.1.1.1),请使用:

Ping 192.0.2.2 -n 1 -w 10000> nul

在这种情况下,-n 1表示仅发送一个数据包而不是4个数据包,并且-w 10000是超时(以毫秒为单位)。

@@@@

在撰写brishray.com文章时,实际上还没有1.1.1.1服务器存在。有趣的是,在示例中使用192.0.2.2代替1.1.1.1。无论如何,私有IP 192.0.2.2无法ping通是很幸运的。如今,例如“ Ping nasa.gov -n 1 -w 10000> nul”可以,但是可以持续多久,如果DNS失败了怎么办...

最后,我对Windows的“ waitfor”命令的回答深表同情

https://stackoverflow.com/a/43878566/2623045

https://stackoverflow.com/a/33368601/2623045

尽管它是Windows功能,但应该是Jenkins功能。

答案 5 :(得分:0)

根据this eclipse bug post,Windows批处理中的TIMEOUT有某种限制,不能在“后台脚本”中使用。

受让人大卫·威廉姆斯(David Williams)还说,可以改用“ PING”,您可能还会注意到还有其他选择,例如“ waitfor”。

我碰巧遇到了同样的问题,最后我选择了GnuWin32版本的sleep。在此场景中,仅coreutils就足够了。计数时,它使用相同的单位(秒)。