【问题标题】:Possible to robocopy only folder with specific signings?可以仅对具有特定签名的文件夹进行 robocopy 吗?
【发布时间】:2020-02-25 07:38:05
【问题描述】:

我第一次编写批处理脚本。我正在尝试使用 robocopy 复制名称中包含例如“(E.10)”的所有文件夹。我试过这样的事情:

    set Source=C:\Test
    set Destination=B:\(E1.10)Test
    robocopy %Source% %Destination%\Backup *(E1.10)* /s /r:5 /w:5 /fp /log+:%Destination%\BackupLog\%tmpLogfilename%.log

但它不会复制任何文件夹。做这种事情的最佳方法是什么?

提前致谢。

编辑: 感谢您的回答,但我认为仍然不清楚我想做什么。我有 Source 文件夹,它有许多子目录,例如: C:\Source\C(E1.10)这个 C:\Source\O(E1.10)那个 C:\Source\C(E1.11)这个 C:\Source\O(E1.11) 那 C:\Source\C(E1.10)这个 C:\Source\SomeFolder C:\Source\SomeOtherFolder

我想复制所有文件夹及其文件夹名称中包含 (E1.10) 的完整内容。

【问题讨论】:

  • 阅读How to Askminimal reproducible exampleSourceDestination 变量在哪里定义?他们有什么价值观? %Source% 目录是否包含应该匹配的文件名?运行命令后日志文件的内容是什么?运行命令后%ERRORCODE% 的值是多少?
  • 我已经添加了我的变量的定义。源目录没有任何文件,只有名称匹配的文件夹。我想将它们复制到外部 USB 驱动器。日志文件只是告诉我没有移动文件夹。在哪里以及如何查看 %ERRORCODE% 值?
  • 第三个参数是一个掩码,它匹配源目录中的文件,但匹配目录(文件夹)...
  • 你需要/E 代替/S

标签: batch-file robocopy


【解决方案1】:

您只需要使用/E/MIR 功能,并始终将路径/文件名变量和glob 放在引号中(以防它们包含空格或其他特殊字符):

robocopy "%Source%" "%Destination%\Backup" "*(E1.10)*" /E /r:5 /w:5 /fp /log+:"%Destination%\BackupLog\%tmpLogfilename%.log"

【讨论】:

  • 感谢您的回答,但我认为仍不清楚我想做什么。我有 Source 文件夹,它有许多子目录,例如: C:\Source\C(E1.10)This C:\Source\O(E1.10)That C:\Source\C(E1.11)This C: \Source\O(E1.11)That C:\Source\C(E1.10)This C:\Source\SomeFolder C:\Source\SomeOtherFolder 我想复制所有包含完整内容的文件夹 (E1.10 ) 在他们的文件夹名称中。当我按照您告诉我的语句执行此操作时,它会将没有内容的每个文件夹复制到我的目的地,而不仅仅是名称中包含 (E1.10) 的文件夹。
  • 您需要编辑原始帖子并将该信息添加到其中(为便于阅读而格式化)。我的一个本地测试示例运行良好。我没有进行更广泛的测试,因为您没有指定更复杂的要求。
  • 您可能需要使用for /D... 循环,该循环在每个源目录匹配基础上调用 robocopy。
猜你喜欢
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多