微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将多个文件从一个源复制到不同的目的地,递归地

如何解决将多个文件从一个源复制到不同的目的地,递归地

我在一个文件夹 (c:\sandBox\image\) 中有 4 个文件

文件如下,INSTALL1.SWMINSTALL2.SWMINSTALL3.SWMINSTALL4.SWM

我的目标结构是 c:\sandBox\extract\*\*\*

我希望只有当它们存在于目标文件夹中时才能复制它们。我的挑战是目标顶级文件夹始终是相同的名称,但是子文件名称会发生​​变化,因此我最终得到了通配符。

我已经尝试使用 xcopy/U 参数使用 /S,但它正在复制 0 文件,所以我想我遗漏了一些东西。

这是我在批处理文件中尝试的内容,但没有成功。

xcopy c:\sandBox\image\*.SWM c:\sandBox\extract\ /U /S

解决方法

for /f "delims=" %%b in ('dir /ad /s/b "C:\sandbox\extract"') do for /L %%c in (1,1,4) do if exist "%%b\install%%c.swm" ECHO copy /y "c:\sandbox\image\install%%c.swm" "%%b\install%%c.swm" 

应该 echo 所需的 copy 命令。删除 echo 关键字以实际执行 copy。附加 >nul 以取消 1 file(s) copied 消息。

未经测试,假设要求是将 install?.swm 复制到根为 "C:\sandbox\extract" 的子树中的任何现有版本

[再次未经测试 - 回应评论]

for /f "delims=" %%b in ('dir /ad /s/b "C:\sandbox\extract"') do for %%c in ("" 2 3 4) do if exist "%%b\install%%~c.swm" ECHO copy /y "c:\sandbox\image\install%%~c.swm" "%%b\install%%~c.swm" 

注意 for /L 替换为普通的 for; list 是 install 的后缀列表;在 do 子句中使用时,使用 %%~c 代替 %%c 以删除引号。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。