批量,混合语法与Gow,SCP在for循环中

时间:2016-01-29 17:03:42

标签: batch-file for-loop scp

我正在使用批处理创建这个小脚本,它是关于从多个Web服务器(apache)获取日志,并且我在安装了gow的IIS服务器上(允许我使用Linux cmd)。

在我的代码中,我有这个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 个答案:

答案 0 :(得分: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)在第二次迭代中失败的原因是因为当scp.bat退出时,它会终止批处理文件上下文,因此不再启用延迟扩展。但是FOR / L命令继续完成。