为什么当放在一个batch file的FOR循环内不rsync通过SSH工作?

我已经放置了ff。 rsync.bat中的代码:

for %%A in (%VAR_REMOTE_HOST%) do ( set VAR_TARGET=%USER%@%%A:%VAR_TARGET_DIR% echo Rsync Source Dir: %VAR_SOURCE% setlocal ENABLEDELAYEDEXPANSION echo Rsync Target Dir: !VAR_TARGET! endlocal echo Syncing files... rsync -rltgDvzO --chmod=Dugo=rwX,Fugo=rw -e ssh %VAR_SOURCE% %VAR_TARGET% ) 

其中VAR_REMOTE_HOST是逗号分隔的服务器列表。

它输出rsync的文件列表,以及权限,大小和时间戳。 它甚至在最后显示一个rsync日志(发送的字节,接收到的字节,字节/秒)。但是,这些文件不会发送到目标。 就好像它跑了干。 (但没有-n选项)

在这里看到截图。 ( http://postimg.org/image/vc0kei1j1/ )

有人遇到过这种情况么?

就好像它跑了干。 (但没有-n选项)

再看一下你的rsync行:

 rsync -nrltgDvzO 

我清楚地看到一个-n选项在那里…

我find了罪魁祸首! 将%VAR_TARGET%更改为!VAR_TARGET! 并将endlocal移到循环的结尾。

新代码:

 for %%A in (%VAR_REMOTE_HOST%) do ( set VAR_TARGET=%USER%@%%A:%VAR_TARGET_DIR% echo Rsync Source Dir: %VAR_SOURCE% setlocal ENABLEDELAYEDEXPANSION echo Rsync Target Dir: !VAR_TARGET! echo Syncing files... rsync -rltgDvzO --chmod=Dugo=rwX,Fugo=rw -e ssh %VAR_SOURCE% !VAR_TARGET! endlocal )