【问题标题】:windows batch multiline command?windows批处理多行命令?
【发布时间】:2012-11-12 09:49:12
【问题描述】:

谁能告诉我以下命令行中的不正确是什么?

${WORKSPACE} = C:\jenkins\workspace\compile-job

cmd.exe /s /c START /b /BELOWNORMAL
mkdir C:\jenkins\workspace\old
move /Y %WORKSPACE%\* C:\jenkins\workspace\old
rmdir /q /s C:\jenkins\workspace\old

【问题讨论】:

  • 它对你有预期的效果吗?
  • %WORKSPACE%* 不可能,因为它不能移动所有文件夹? * 这就是问题
  • 我想我需要一个所有文件夹的循环...
  • 我猜你有更紧迫的问题,因为这肯定不会达到你的预期(或者你的意图很奇怪)。

标签: windows batch-file command


【解决方案1】:

很多。

  1. ${WORKSPACE} = ... 既不是 cmd 也不是 PowerShell 语法,这毫无意义。使用

    set WORKSPACE=C:\jenkins\workspace\compile-job
    

    改为。

  2. 您可以通过以^ 结束前一行来创建多行命令。但是,您想要执行三个命令,而不仅仅是一个。一种选择是编写一个批处理文件来执行(当然是最干净的方法)。但是既然你已经有了,你可以变得聪明:

    if not %1==x (
      START "" /b /BELOWNORMAL %0 x
      goto :eof
    )
    
    set WORKSPACE=C:\jenkins\workspace\compile-job
    
    mkdir C:\jenkins\workspace\old
    move /Y %WORKSPACE%\* C:\jenkins\workspace\old
    rmdir /q /s C:\jenkins\workspace\old
    

    这将再次执行批处理文件,但带有一个参数,在批处理中,我们查看该参数是否存在并执行工作。

【讨论】:

  • 该集合未使用,${WORKSPACE} 是来自 Jenkins 的环境变量...如果不是 %1==x 将无法与 Jenkins Windows Batch 一起使用...我希望在每项工作之后, 在后台工作区移动和删除
  • 进程无法移动文件,因为它正被另一个进程使用。 Jenkins 进程正在运行... cmd 无法移动文件。有没有人想法/解决方案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 2010-11-29
相关资源
最近更新 更多