下面是用于检查服务状态并根据条件停止服务或启动服务的bat命令。
//Bat命令
for /F "tokens=3 delims=: " %%H in ('sc query wuauserv ^| findstr "STATE"') do ( if /I "%%H" NEQ "Running" ( net start wuauserv ) else (echo "Hello World"))
//Jenkins档案
bat 'for /F "tokens=3 delims=: " %%H in ('sc query wuauserv ^| findstr "STATE"') do ( if /I "%%H" NEQ "Running" ( net start wuauserv ) else (echo "Hello World"))'
当我把批处理命令放在Jenkins文件中时,显示语法错误。最后当我删除语法错误时,但现在命令无法正常工作
//不含语法错误的Jenkins档案
bat 'for /F "tokens=3 delims=: " %%H in ("sc query wuauserv ^| findstr "STATE"") do ( if /I "%%H" NEQ "Running" ( net start wuauserv ) else (echo "Hello World"))'
我只想让批处理命令适合Jenkins文件并正常工作。
2条答案
按热度按时间4xy9mtcn1#
您在批处理文件中使用的命令对于您使用它的目的来说是不必要的。
也许以下批处理文件命令会更好地为您服务:
但是请注意,
|| Echo "Hello World"
可能不是必需的,因为主机在您有时间读取它之前就已经退出了。1
,(STOPPED),而不是RUNNING
来检查。这不仅使命令不依赖于语言,而且2
可能(开始_等待),3
(停止_挂起)和4
(RUNNING),但没有一个处于当前状态,可以启动。您的方法将所有非RUNNING的对象视为可以启动,但正如您在上面看到的,事实并非如此。*jaxagkaj2#
我通过简单地跳过('')来解决这个问题,因为在命令中再次使用这些字符会导致语法错误,所以我通过在命令中使用\来跳过它们。命令现在可以完美地工作,没有groovy语法错误。
//以下是示例