无法批量堆叠robocopy和ren

时间:2016-09-24 18:37:14

标签: windows batch-file cmd

我试图在Windows中一次批量执行三个命令:robocopycdren。例如,我想将文件复制到另一个目录,然后在其名称后添加.bak。我使用&&来堆叠命令:

robocopy C:\original D:\backup && cd D:\backup && ren * *.bkp

但是,似乎我只是在命令提示符下输入第一位:

robocopy C:\original D:\backup && cd D:\backup

目录实际上并没有改变。我需要手动插入第二个命令。

我也试过

robocopy C:\original D:\backup && ren D:\backup\* *.bkp

同样,它只有在我单独手动执行命令时才有效。如果我执行整个命令,则只执行第一位(robocopy)。

1 个答案:

答案 0 :(得分:1)

&&表示仅在前一个命令成功(或返回错误级别为0)时才执行下一个命令。同样,||仅在上一个命令失败时执行下一个命令(或返回错误级别大于0

一些例子是:

copy null null   ||  echo this command failed

rundll32         &&  echo this command was successful

copy 1.txt 2.txt &&  echo success  ||  echo failed


因此,如果您想copy一个文件,change目录,然后rename一个文件,您可以执行以下操作:

robocopy C:\original D:\backup & cd D:\backup & ren * *.bkp

请注意,如果robocopy无法仅复制1个文件(或更多),则您无法使用&&

更健壮的选项会检查D:\backup是否存在:

(robocopy C:\original D:\backup & if exist "D:\backup" (pushd D:\backup & ren * *.bkp) else (echo Failed to create D:\backup 2>nul)) >nul

它会pushd进入目录,只有robocopy命令成功才会重命名文件,另外隐藏除错误之外的所有消息