从Windows cmd在bash中调用rsync

从Windows cmd在bash中调用rsync,bash,ubuntu,batch-file,rsync,Bash,Ubuntu,Batch File,Rsync,我正在尝试从批处理文件运行rsync。命令是 SET CMD="rsync -P -rptz --delete -e 'ssh -i /root/.ssh/CERTIFICATE.pem' SOURCE_ADDRESS /mnt/c/Users/MYNAME/IdeaProjects/PROJECT/SUBFOLDER/SUBFOLDER/SUBFOLDER/SUBFOLDER/LASTFOLDER" bash %CMD% 如果我在键入bash后运行命令,这很好,但是当我使用bash前体从

我正在尝试从批处理文件运行
rsync
。命令是

SET CMD="rsync -P -rptz --delete -e 'ssh -i /root/.ssh/CERTIFICATE.pem' SOURCE_ADDRESS  /mnt/c/Users/MYNAME/IdeaProjects/PROJECT/SUBFOLDER/SUBFOLDER/SUBFOLDER/SUBFOLDER/LASTFOLDER"

bash %CMD%
如果我在键入
bash
后运行命令,这很好,但是当我使用
bash
前体从cmd运行命令时,它表示没有这样的文件或目录

此外,在玩游戏和尝试调试bash时,最终会挂起。。。i、 如果我打开bash,我没有得到任何提示,只有一个闪烁的光标


非常感谢您的帮助。

要使用bash运行命令,您需要使用

如果没有它,第一个非选项参数将被视为*.sh shell脚本,而rsync则不是,并将导致错误

如果参数在选项处理后仍然存在,并且未提供
-c
-s
选项,则假定第一个参数是包含shell命令的文件名


请注意,Windows中的cmd不是DOS,即使它们有一些类似的命令。其余的则大不相同

要使用bash运行命令,您需要使用

如果没有它,第一个非选项参数将被视为*.sh shell脚本,而rsync则不是,并将导致错误

如果参数在选项处理后仍然存在,并且未提供
-c
-s
选项,则假定第一个参数是包含shell命令的文件名


请注意,Windows中的cmd不是DOS,即使它们有一些类似的命令。其余的则大不相同

谢谢,我发现用-c运行它不会给出--info=progress2信息。。。或者可能是因为上面的闪烁光标问题。无论如何,这是100%的工作。我找到的另一个解决方案是,将CMD分离成一个shell脚本,您可以在不使用-c的情况下运行它。这似乎确实会导致windows/linux权限冲突,创建wsl.config文件似乎可以解决此问题。
--info=progress2
在我的电脑上运行良好。可能是您的rsync出现了一些问题,停止以非交互模式打印进度,因为它认为输出可能是一个文件。尝试
bash-i
或其他方法。但是你甚至不需要rsync。有一个内置的完全相同的目的,或者你可以是的,这是工作,我站在更正。但是,无论我在运行第一个rsync之后做什么,我都有blicking游标,而没有提示错误,因此在尝试执行第二个rsync时,我的批处理脚本完全挂起。即使我在windows终端上打开第二个ubuntu,我仍然会遇到光标闪烁的问题。我尝试过在shell脚本中使用exit语句和不使用exit语句,这些脚本是从批处理文件调用的,也有-c语句和不使用-c语句。我只能重新启动来修复它。。。运行这两个命令的唯一方法似乎是输入bash并在中粘贴两个rsync cmds,其他方法都不起作用。仍然存在ubuntu挂起的问题,在第一个rsync命令后它完全停止,我被迫重新启动(一个批处理文件调用2个单行rsync命令shell文件,带有shebang…我的大脑告诉我这是一个EOL问题,但是sh文件使用LF,批处理使用CRLF).你说可以改用robocopy吗?请记住,源和/或目标通常是远程aws linux服务器。这仍然是真的吗?如果是,我将如何转换当前命令(这将使生活更轻松)?这是一个不同的问题,所以请问另一个问题。它可能更适合于。如果您可以创建samba共享,您可以使用robocopy。谢谢,我发现使用-c运行它不会提供--info=progress2信息…或者可能是由于上面的闪烁光标问题。无论如何,这是100%有效的。我找到了另一个解决方案,将CMD分离到一个shell脚本中,您可以在不使用-c的情况下运行该脚本。这似乎确实会导致windows/linux权限冲突,创建wsl.config文件似乎可以解决此问题。在我的电脑上,
--info=progress2
工作正常。您的rsync可能会出现一些问题,因为它在非交互模式下停止打印进度认为输出可能是一个文件。请尝试使用
bash-i
或其他方法。但是,您甚至不需要rsync来实现此目的。有内置的用于完全相同的目的,或者您可以是的,这确实有效,我会得到更正。但是,无论我在运行第一个rsync后执行什么操作,我都会有blicking光标,而不会出现提示错误,因此我的批处理脚本会挂起comp在尝试执行第二次rsync时,请不要重复。即使我在windows终端上打开第二个ubuntu,我仍然会遇到光标闪烁的问题。我尝试过在批处理文件中调用的shell脚本中使用或不使用exit语句,也可以使用或不使用-c。我只能重新启动以修复它…运行这两个脚本的唯一方法似乎是使用enter bash并将两个rsync cmds都粘贴到中,其他都不起作用。仍然存在ubuntu挂起的问题,在第一个rsync命令后它完全停止,我被迫重新启动(一个批处理文件调用两个单行rsync命令shell文件,带有shebang…我的大脑告诉我这是一个EOL问题,但是sh文件使用LF,批处理使用CRLF).你说可以改用robocopy吗?请记住,源和/或目标通常是远程aws linux服务器。这仍然是真的吗?如果是,我将如何转换当前命令(这将使生活更轻松)?这是另一个问题,所以请问另一个问题。它可能更适合于。如果您可以创建samba共享,您可以使用robocopy。
bash -c "%CMD%"