Robocopy 对目标文件夹的误解

Robocopy 对目标文件夹的误解

我想创建一个简单的脚本,将文件夹的全部内容移动到父目录中,并将其插入到上下文菜单中。

这是脚本。我试图了解如何robocopy使用带有空格的路径名。Echo
和 pause 仅用于故障排除。

@echo 开启
设置原点= %1
设置目标=“%〜dp1”
回显 %来源%
回显%目的地%
暂停
robocopy %origin%%destiny%/ E / MOVE / R:2 / ETA
暂停

答案1

您不需要在命令中用引号括住路径set,只有当您尝试在命令中使用变量时才需要这样做。

set将整个内容视为字符串并且不关心空格,而命令robocopy将把空格(%foo%展开时)视为参数分隔符。

您传递给批处理文件的任何文件路径在调用批处理文件时都需要用引号引起来(否则空格会将路径解析为多个参数),因此为了避免某些内容被引用而其他内容没有,您可以使用表单%~1删除引号。

但是,您发布的脚本中有一个缺陷,那就是如果您传递的原始路径(即%1)尾随\,那么%~dp1它会计算为与 相同的路径,%1而不是父路径。

相关内容