2012-11-12 270 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