2016-01-29 30 views
1

我正在使用批處理這個小腳本,它是關於從多個web服務器(apache)獲取日誌,並且我在安裝gow的IIS服務器上(允許我使用Linux cmd)。批處理,混合語法與Gow,SCP在for循環

在我的代碼,我有這樣的循環:

setlocal enableDelayedExpansion 

for /L %%X in (0,1,%end%) do (
    echo scp -l Brooze -pw Brooze !ip_vector[%%X]!:!mypathLogLX_cedre! !mypathLogLX_stock!\!mysite!\access_log 
) 

這個工作,但是當我刪除echo,只是做scp,它工作在我的for循環的第一次迭代,而不是在其次,因爲在第二次迭代中,我所有的變量都是這樣的:!var!,這似乎不起作用。

+1

我沒有看到任何定義的變量。它甚至不應該工作一次! – Squashman

回答

0

最有可能的是,scp是批處理腳本(scp.bat)。所以,你需要使用

setlocal enableDelayedExpansion 

for /L %%X in (0,1,%end%) do (
    call scp -l Brooze -pw Brooze !ip_vector[%%X]!:!mypathLogLX_cedre! !mypathLogLX_stock!\!mysite!\access_log 
) 

之所以你原來的代碼(沒有CALL)2號迭代失敗,超越是因爲當scp.bat退出,則終止該批處理文件上下文,因此延遲擴展不更長的啓用。但FOR/L命令繼續完成。