【问题标题】:Using Xcopy or other to copy similar folders within directory使用 Xcopy 或其他方法复制目录中的类似文件夹
【发布时间】:2015-10-28 03:50:01
【问题描述】:

我有一个目录,其中有几个文件夹,名称如 'MAPAS_10452; MAPAS_21685; MAPAS_22731' 和操作系统... 在每个文件夹中我都有几个文件夹,但我只想复制其中一个文件夹“NOVOS”的内容。

是否可以使用 Xcopy、批处理文件或其他选项来仅复制我想要的文件夹的内容,对于我拥有的每个文件夹 'MAPAS_XXXXX' ?

结果将是: MAPAS_10452/NOVOS MAPAS_21685/NOVOS MAPAS_22731/NOVOS

【问题讨论】:

  • 是的,有可能(在命令提示符下运行for/? 以查看选项),您尝试过什么吗?
  • 我已经做到了,但它不起作用:对于 C:\Users\user\Desktop\MapasSAAS\ 中的 %%f,请复制 %%f\NOVOS\ C:\Users\user\Desktop \文件夹\%%f\NOVOS
  • 查看robocopy -- 你应该不需要其他任何东西......

标签: windows batch-file exec xcopy


【解决方案1】:
  1. 正如for /? help 所说,您应该将路径放在括号中。
  2. 添加通配符以枚举文件夹内容:*
  3. 仅使用父文件夹的名称来构建新路径:%%~nf
  4. 检查NOVOS 子文件夹是否确实存在。
  5. 为了灵活使用%USERPROFILE%系统变量
  6. 使用xcopy /s 并在第二个参数后添加一个斜杠以表示它是一个文件夹
  7. [可选] 使用 doubleqoutes 处理带空格的文件/文件夹名称

for %%f in ("%USERPROFILE%\Desktop\MapasSAAS\*") do (
    if exist "%%f\NOVOS" (
        xcopy /s "%%f\NOVOS" "%USERPROFILE%\Desktop\folder\%%~nf\NOVOS\\"
    )
)

【讨论】:

  • 您的初始代码不起作用,但通过一些细微的更改,我能够做到:for /D %%f in ("%USERPROFILE%\Desktop\MapasSAAS\*") do (如果存在 "%%f\NOVOS\*" ( xcopy /s "%%f\NOVOS\*" "%USERPROFILE%\Desktop\folder\%%~nf\NOVOS\" )。所以,非常感谢您的帮助
  • 好吧,严格来说,这不是我的代码,因为我只是修复了您代码中的问题。
猜你喜欢
  • 2017-01-28
  • 2012-09-16
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多