如何解决将多个文件从一个源复制到不同的目的地,递归地
我在一个源文件夹 (c:\sandBox\image\
) 中有 4 个文件。
文件如下,INSTALL1.SWM
、INSTALL2.SWM
、INSTALL3.SWM
、INSTALL4.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 举报,一经查实,本站将立刻删除。