[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求助批处理批量复制指定文件夹及其下的文件

  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文件夹都拷贝出来,其他不要。

回复 1# mfkdf


请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

回复 2# Batcher


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

TOP

回复 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. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# Batcher


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

TOP

回复 5# mfkdf


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

如果仍有问题,请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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

TOP

  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
复制代码
微信:flashercs
QQ:49908356

TOP

回复 7# mfkdf


    请举例说明结果不理想,例如:代码得到的结果跟你希望的结果有什么差异
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# flashercs


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

TOP

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


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


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

TOP

回复 11# mfkdf


4楼代码第12行改成这样:
for /f "delims=" %%i in ('dir /b /s /ad "jpg" "原图"') do (
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 12# Batcher

可以,好用,多谢

TOP

返回列表