我试图在Windows中一次批量执行三个命令:robocopy
,cd
和ren
。例如,我想将文件复制到另一个目录,然后在其名称后添加.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
)。
答案 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
命令成功才会重命名文件,另外隐藏除错误之外的所有消息