标题: [文件操作] 求助批处理批量复制指定文件夹及其下的文件 [打印本页]
作者: mfkdf 时间: 2022-2-7 09:52 标题: 求助批处理批量复制指定文件夹及其下的文件
- @echo off
- set "源文件夹=D:\工作量\2021年12月"
- set "目标文件夹=D:\111"
- for /f "delims=" %%a in ('dir /ad/b "%源文件夹%"') do (
- xcopy "%源文件夹%\jpg" "%目标文件夹%\jpg\" /s /y 2>nul
- )
- 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 - @echo off
- setlocal enabledelayedexpansion
- set "FromFolder=D:\工作量\2021年12月"
- set "ToFolder=D:\111"
- if not exist "%FromFolder%\" (
- echo 没有找到文件夹 "%FromFolder%"
- )
- if not exist "%ToFolder%\" (
- echo 没有找到文件夹 "%ToFolder%"
- )
- cd /d "%FromFolder%"
- for /f "delims=" %%i in ('dir /b /s /ad "jpg"') do (
- set "OldFolder=%%i"
- set "NewFolder=!OldFolder:%FromFolder%\=!"
- if not exist "%ToFolder%\!NewFolder!" (
- md "%ToFolder%\!NewFolder!"
- )
- xcopy /s /y "%%i" "%ToFolder%\!NewFolder!\"
- )
复制代码
作者: 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 - @echo off
- set "FromFolder=E:\2022年01月"
- set "ToFolder=D:\111"
- if not exist "%FromFolder%\" (
- echo 没有找到文件夹 "%FromFolder%"
- )
- if not exist "%ToFolder%\" (
- echo 没有找到文件夹 "%ToFolder%"
- )
- cd /d "%FromFolder%"
- for /f "delims=" %%i in ('dir /b /s /ad "cc"') do (
- set "OldFolder=%%i"
- set "NewFolder=!OldFolder:%FromFolder%\=!"
- if not exist "%ToFolder%\!NewFolder!" (
- md "%ToFolder%\!NewFolder!"
- )
- xcopy /s /y "%%i" "%ToFolder%\!NewFolder!\"
- )
复制代码
我把路径和需要拷贝的文件夹换了,现在可以拷贝了,不过结果不理想,我想要的是源文件夹的文件结构保留,也就是这样D:\111\2022年01月\(这里是每个项目名称文件夹)\cc
作者: flashercs 时间: 2022-2-7 13:09
- @echo off
- set "源文件夹=D:\工作量\2021年12月"
- set "目标文件夹=D:\111"
- for /f "delims=" %%a in ('dir /ad/b "%源文件夹%"') do (
- xcopy "%源文件夹%\%%a\jpg" "%目标文件夹%\jpg\" /s /y 2>nul
- )
- pause
复制代码
或者是- @echo off
- set "源文件夹=D:\工作量\2021年12月"
- set "目标文件夹=D:\111"
- for /d %%a in ("%源文件夹%\*") do (
- xcopy "%%a\jpg" "%目标文件夹%\jpg\" /s /y 2>nul
- )
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |