2012-11-12 215 views
1

有人可以告诉我什么在下面的命令行不正确的是?windows批处理多行命令?

${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 
+1

是否按预期为您工作? – jeb

+0

%WORKSPACE%\ *它不可能,因为它无法移动所有文件夹? *这是问题 – Fawi

+0

我想我需要一个所有文件夹的循环... – Fawi

回答

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 
    

    这将再次但是有一个参数,并在该批次中,我们看这样的说法是否存在并且做的工作或不执行批处理文件。

+0

该集未使用,$ {WORKSPACE}是来自Jenkins的env变量... 如果不是%1 == x将无法与Jenkins Windows批处理...我想在每个作业后,在后台工作区moven和删除 – Fawi

+0

该进程无法移动文件,因为它正在被另一个进程使用。 Jenkins进程正在运行... cmd无法移动文件。有任何想法/解决方案? – Fawi