我正在使用批处理创建这个小脚本,它是关于从多个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!
,似乎没有用。
答案 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命令继续完成。