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

[文件操作] [已解决]批处理如何复制所有文件夹且只包括其中特定类型的文件?

小弟想复制某文件夹下的所有文件夹和子文件夹,但不复制文件夹内的文件(除了jpg与gif图片格式),这要怎么写?谢谢!
其实单只是复制文件夹和其子文件夹我已经找到答案了,但要么仅是要文件夹不要文件,或是要文件夹和所有文件的。
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

  先复制文件夹,然后再复制相应的jpg和gif,想一步到位是很难办的:不是办不到,是办到了却没效率。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

如果某文件夹内没有 jpg 或 gif 文件呢?那么还要复制该文件夹吗?
技术问题请到论坛发帖求助!

TOP

如果某文件夹内没有 jpg 或 gif 文件呢?那么还要复制该文件夹吗?

要的。但文件夹内容为空

TOP

以前在xcopy命令上折腾过。
  1. @echo off
  2. set src=某文件夹具体路径
  3. set dst=目标目录
  4. for %%a in (jpg gif) do xcopy /s/e/c "%src\*.%%a" "%dst%\"
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

谢谢5楼的代码,可是我看看你的代码就觉得有问题了,结果试了一下,没有什么操作的。

TOP

回复 6楼 的帖子

有问题的地方你就不知道修改吗?
你注册有一段时间了,发的帖子也不少。。。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

其实我也在改你的代码了,但还是没有得到预期的目的,算了,看来我还是继续想办法吧。

TOP

我的测试结果:

C:\>test.bat

C:\>rem @echo off

C:\>set src=C:\Documents and Settings\Administrator\桌面\test

C:\>set dst=D:\test

C:\>for %a in (jpg gif) do xcopy /s/e/c "C:\Documents and Settings\Administrator\
桌面\test\*.%a" "D:\test\"

C:\>xcopy /s/e/c "C:\Documents and Settings\Administrator\桌面\test\*.jpg" "D:\te
st\"
C:\Documents and Settings\Administrator\桌面\test\a\1.jpg
复制了 1 个文件

C:\>xcopy /s/e/c "C:\Documents and Settings\Administrator\桌面\test\*.gif" "D:\te
st\"
C:\Documents and Settings\Administrator\桌面\test\1.gif
复制了 1 个文件

C:\>pause
请按任意键继续. . .

C:\>tree /f D:\test
文件夹 PATH 列表
卷序列号为 A442-A07A
D:\TEST
│  1.gif

├─a
│      1.jpg

└─b


[ 本帖最后由 zqz0012005 于 2009-4-5 15:28 编辑 ]

TOP

用nircmd试试
shellcopy [source file or wildcard] [destination] {Flags}
从一文件夹下拷贝一个或多个文件至另一文件夹中。并显示进展情况对话框,非常类似资源浏览器下文件复制操作。

可以配合使用以下一个或多个标志值:
yestoall: 自动用'是'应答所有问题
noerrorui: 不显示错误信息提示界面
silent: 静默模式—不显示任何进展信息提示
nosecattr: 不拷贝带有安全属性文件
例子:
nircmd shellcopy "c:\temp\*.*" "d:\temp"
nircmd shellcopy "c:\temp\*.*" "d:\temp" yestoall noerrorui

TOP

别人好心为你写了代码,你测试不成功应该告诉别人为什么不成功,提示什么错误。
你预期的是什么,实际执行代码得到的是什么。
而不是简单的一句 “没有得到预期的目的” 就否定了别人的劳动。
你来这里发帖求助,别人解答是热心而不是义务,即使没有真正的帮到你,也应该对这份热心表示感谢,不是吗?
而最能体现你对别人劳动成果尊重的方法之一就是认真测试代码,并指出和你预期不符的具体的地方。
:
  1. @echo off
  2. ::目的文件夹名为 temp
  3. set wjj=temp
  4. ::复制文件夹及子文件夹
  5. for /f "delims=" %%a in ('dir/b/s/ad') do (
  6.    if not exist "%wjj%\" md "%wjj%"
  7.    set "var=%%a"
  8.    setlocal enabledelayedexpansion
  9.    set var=!var:*%cd%=!
  10.    md "%wjj%!var!"
  11.    endlocal
  12. )
  13. ::复制 jpg 和 gif 文件
  14. for /f "delims=" %%a in ('dir/b/s/a-d *.jpg *.gif') do (
  15.    set "var=%%a"
  16.    setlocal enabledelayedexpansion
  17.    set var=!var:*%cd%=!
  18.    copy /y "%%a" "%wjj%!var!"
  19.    endlocal
  20. )
  21. pause
复制代码
技术问题请到论坛发帖求助!

TOP

佩服楼主竟然知道那么多批处理论坛。
2009-4-5 04:00
http://www.cn-dos.net/forum/viewthread.php?tid=46798&fpage=1
显然未果。但未见楼主有任何反馈。

2009-4-5 10:26
http://www.bathome.net/thread-4031-1-1.html
即此帖。2009-4-5 12:02 有一个代码回复,而楼主仅回复“没有得到预期的目的”。

2009-4-5 14:18
http://bbs.verybat.org/thread-16969-1-1.html
未见楼主有任何反馈。


如果楼主是这种态度的话,我想以后几乎不会得到任何帮助。。。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

抱歉了!因为要操作的文件夹很多的,有上百G的东东,都是图片和影片、mp4,如果就是按大家所给中文方案,我自己也是会编的,可是就像dos 论坛那帮人给的,要全部复制再删,我没有办法找个临时分区给呀,zqz0012005,你9楼的代码,如果有多个层的子目录就会出错,原本是第三层的子文件夹内的jpg文件,复制过来后,却成了第二层,其它层的也有类似的情况。偶觉得你们在编代码时,都没有自己测试过,觉得这样很不负责的,虽是有苦劳,可是完全不留意一下发贴人的感受,完全在想我是无私帮你,不管怎么你都要对我毕恭毕敬,偶是个直肠子的,如果是这样,宁可不回贴,故而也没有在本论坛上看看回贴了,而是转去其他论坛,不过你的无私奉献还是值得肯定的,谢谢!

[ 本帖最后由 ganjie 于 2009-4-6 10:32 编辑 ]

TOP

因为要操作的文件夹很多的,有上百G的东东

这么重要的信息,为何不在顶楼给出?
故而也没有在本论坛上看看回贴了,而是转去其他论坛

各大批处理论坛有水平和实力帮你解决疑难问题的人,也就是那么一个小圈子,说不定他们只是在不同的论坛有不同的ID而已。
建议阅读提问的智慧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

楼上的说得是,小弟因为不能时时在线看回贴,所以没有很快的回复大家,抱歉!昨天我自己已经编出来了,用了三个批处理,再用call调用,代码和zqz0012005给的不谋而合,第一个是复制全部文件夹,内容为空;第二个是只复制有图片文件夹的目录及图片,第三个只是给它加入了判断语句,看看它们两个目录子文件夹层是否相同和里面的图片是否在同一层而已。小弟不太会说话,性子又烈,如有什么地方得罪的,还请各位老大海涵。

TOP

返回列表