Board logo

标题: [文件操作] 求助批处理批量复制指定文件夹及其下的文件 [打印本页]

作者: mfkdf    时间: 2022-2-7 09:52     标题: 求助批处理批量复制指定文件夹及其下的文件

  1. @echo off
  2. set "源文件夹=D:\工作量\2021年12月"
  3. set "目标文件夹=D:\111"
  4. for /f "delims=" %%a in ('dir /ad/b "%源文件夹%"') do (
  5.     xcopy "%源文件夹%\jpg" "%目标文件夹%\jpg\" /s /y 2>nul
  6. )
  7. pause
复制代码
我有一个代码之前还挺好用,不知道为什么不能用了,要求是复制指定文件夹下的所有jpg文件夹,比如我的"源文件夹=D:\工作量\2021年12月" 有10个项目文件夹,每个文件夹都是按项目命名的,每个项目文件夹下有n个文件夹,里面肯定有叫jpg的文件夹,我想把这个月的文件夹-项目文件夹-jpg文件夹都拷贝出来,其他不要。
作者: Batcher    时间: 2022-2-7 10:01

回复 1# mfkdf


请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: mfkdf    时间: 2022-2-7 10:18

本帖最后由 mfkdf 于 2022-2-7 10:20 编辑

回复 2# Batcher


    多谢指教,刚刚试了,没有任何错误提示,就是提示复制了0个文件.有多少个下级文件夹,就提示多少次,我确定目标文件夹和源文件夹路径都没问题,还有我要复制的是每个文件夹下都包含的jpg文件夹(不是jpg格式图片),麻烦帮我看看哪里有问题
作者: Batcher    时间: 2022-2-7 11:45

回复 3# mfkdf
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "FromFolder=D:\工作量\2021年12月"
  4. set "ToFolder=D:\111"
  5. if not exist "%FromFolder%\" (
  6.     echo 没有找到文件夹 "%FromFolder%"
  7. )
  8. if not exist "%ToFolder%\" (
  9.     echo 没有找到文件夹 "%ToFolder%"
  10. )
  11. cd /d "%FromFolder%"
  12. for /f "delims=" %%i in ('dir /b /s /ad "jpg"') do (
  13.     set "OldFolder=%%i"
  14.     set "NewFolder=!OldFolder:%FromFolder%\=!"
  15.     if not exist "%ToFolder%\!NewFolder!" (
  16.         md "%ToFolder%\!NewFolder!"
  17.     )
  18.     xcopy /s /y "%%i" "%ToFolder%\!NewFolder!\"
  19. )
复制代码

作者: mfkdf    时间: 2022-2-7 12:00

回复 4# Batcher


   这个好像不行,闪一下就没了,我前面发的那个问题出在哪里我基本搞清楚了,就是不知道怎么改,我的源路径下面是每个项目的文件夹,每个项目文件夹下才有jpg文件夹,也就是说xcopy source "%源文件夹%\jpg" "%目标文件夹%"\jpg /s /y 2>nul这里要写的有问题,可我不知道怎么改
作者: Batcher    时间: 2022-2-7 12:03

回复 5# mfkdf


请参考Q-04把4楼bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ

如果仍有问题,请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: mfkdf    时间: 2022-2-7 12:12

本帖最后由 mfkdf 于 2022-2-7 12:26 编辑

回复 6# Batcher
  1. @echo off
  2. set "FromFolder=E:\2022年01月"
  3. set "ToFolder=D:\111"
  4. if not exist "%FromFolder%\" (
  5.     echo 没有找到文件夹 "%FromFolder%"
  6. )
  7. if not exist "%ToFolder%\" (
  8.     echo 没有找到文件夹 "%ToFolder%"
  9. )
  10. cd /d "%FromFolder%"
  11. for /f "delims=" %%i in ('dir /b /s /ad "cc"') do (
  12.     set "OldFolder=%%i"
  13.     set "NewFolder=!OldFolder:%FromFolder%\=!"
  14.     if not exist "%ToFolder%\!NewFolder!" (
  15.         md "%ToFolder%\!NewFolder!"
  16.     )
  17.     xcopy /s /y "%%i" "%ToFolder%\!NewFolder!\"
  18. )
复制代码
我把路径和需要拷贝的文件夹换了,现在可以拷贝了,不过结果不理想,我想要的是源文件夹的文件结构保留,也就是这样D:\111\2022年01月\(这里是每个项目名称文件夹)\cc
作者: flashercs    时间: 2022-2-7 13:09

  1. @echo off
  2. set "源文件夹=D:\工作量\2021年12月"
  3. set "目标文件夹=D:\111"
  4. for /f "delims=" %%a in ('dir /ad/b "%源文件夹%"') do (
  5.     xcopy "%源文件夹%\%%a\jpg" "%目标文件夹%\jpg\" /s /y 2>nul
  6. )
  7. pause
复制代码
或者是
  1. @echo off
  2. set "源文件夹=D:\工作量\2021年12月"
  3. set "目标文件夹=D:\111"
  4. for /d %%a in ("%源文件夹%\*") do (
  5.     xcopy "%%a\jpg" "%目标文件夹%\jpg\" /s /y 2>nul
  6. )
  7. pause
复制代码

作者: Batcher    时间: 2022-2-7 14:02

回复 7# mfkdf


    请举例说明结果不理想,例如:代码得到的结果跟你希望的结果有什么差异
作者: mfkdf    时间: 2022-2-7 16:16

回复 8# flashercs


    可以复制,但保存结果不理想,源目录结构是D:\工作量\2021年12月,这个文件夹下面有n个项目的文件夹,在这n个项目文件夹里肯定会有一个叫jpg的文件夹,我就是要复制每个项目的jpg文件夹(包括里面的内容),但原有目录结构还保留,结果就是目标文件夹结构是D:\111\2021年12月\项目文件夹\jpg(项目文件夹会有n多个,每个里面只有jpg文件夹包括里面的内容)
作者: mfkdf    时间: 2022-2-7 16:17

本帖最后由 mfkdf 于 2022-2-7 16:31 编辑
回复  mfkdf


    请举例说明结果不理想,例如:代码得到的结果跟你希望的结果有什么差异
Batcher 发表于 2022-2-7 14:02


不好意思之前弄错了,试了几次发现可以用了,还有个问题。我的每个项目里面有的有“原图”文件夹,有的没有,这个我也想复制过来(有的话就和jpg文件夹放同一目录下,没有就忽略,不需要任何提示),要怎么改?
作者: Batcher    时间: 2022-2-8 08:51

回复 11# mfkdf


4楼代码第12行改成这样:
for /f "delims=" %%i in ('dir /b /s /ad "jpg" "原图"') do (
作者: mfkdf    时间: 2022-2-8 09:26

回复 12# Batcher

可以,好用,多谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2