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

[文件操作] 【已解决】批处理如何实现特定文件名文件的复制和归档?

[复制链接]
 楼主| 发表于 2015-2-28 16:15:57 | 显示全部楼层
回复 16# pcl_test


    感谢您的代码!感觉很接近了!
    我的 file.txt文件里面都是数字,数字之间是用回车间隔,并且我要找的文件也都是文件名带数字的。我需要找跟这些数字相关联的但是遇到新的问题:
1. 会在“D:/NEW”下生成不少新的文件夹,文件夹名称的最后一个字段是数字。我的file.txt里面有2、3、4、7这4个数字,然后D:/NEW下也就有了4个文件夹,文件夹名称就分别是2、3、4、7。很奇怪!我希望是都保存在一个文件中的,这样又新增了新的文件夹了。
2. 会在"D:/NEW"中的2文件夹中,把原文件夹中所有的项目都拷贝进来了,不管是不是FILE.TXT里面需要的,都统统考进来了。

大神请帮忙!
发表于 2015-2-28 16:28:53 | 显示全部楼层
回复 17# gxx2002

把14行、21行代码中的"%fdir2%%%a\"改为"%fdir2%"
 楼主| 发表于 2015-2-28 17:01:42 | 显示全部楼层
回复 18# pcl_test


    还是有个问题,他把所有的文件都拷出来了!不仅是在file.txt里面的文件,而现在只是需要file.txt文件中规定的几个文件!

   烦请大神您帮忙!也麻烦大神直接在我附上的RAR文件中修改吧?多谢啊!
  多谢!
发表于 2015-2-28 17:16:50 | 显示全部楼层
回复 19# gxx2002

用你给的例子直接运行代码没有问题呀,只是需要file.txt文件中规定的几个文件?不是说file.txt列出的只是文件的部分名字吗?所以只要名字包含有file.txt列出的的都会复制过去,而且修改时间要设定好
 楼主| 发表于 2015-2-28 17:19:21 | 显示全部楼层

标题

回复 20# pcl_test
    大神,我用的是win7 64bit是否是这个问题?
发表于 2015-2-28 17:25:34 | 显示全部楼层
回复 21# gxx2002
是不是你的一些子文件夹名也包含有file.txt列出的某些字符串?
发表于 2015-2-28 18:02:49 | 显示全部楼层
1、可能效率略慢;
2、先在CMD中输入echo,%date% 确定日期的格式,然后根据日期格式填下  geq(大于等于)   leq(小于等于)  后面的日期。  如果是date输出的2014/01/01 这样,就要填一样的格式。

代码如下:
for /f %%s in (file.txt) do for /r "原文件夹" %%f in (*%%s*.txt) do if "%%~tf" geq "2014-01-01" if "%%~tf" leq "2014-04-31" copy "%%~dpnxf" "\目标文件夹\%%~nxf" /Y
发表于 2015-2-28 18:33:27 | 显示全部楼层
本帖最后由 pcl_test 于 2015-2-28 18:34 编辑

回复 19# gxx2002
过滤了子文件夹名也包含有file.txt列出的某些字符串导致不符合要求的文件也被复制的问题
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::设定要搜索的目录
  4. set "fdir1=原文件夹"
  5. ::设定目标文件夹
  6. set "fdir2=目标文件夹"
  7. ::设定修改日期1(yyyymmdd)
  8. set date1=20150101
  9. ::设定修改日期2(yyyymmdd)
  10. set date2=20150228
  11. ::日期1要早于日期2
  12. if %date1% geq %date2% echo 日期1要早于日期2,请重新设定 & pause & exit
  13. if not exist "%fdir2%" md "%fdir2%"
  14. for /f "delims=" %%a in ('dir /a-d /s /b "%fdir1%"') do >>$1 echo,%%~nxa
  15. for /f "delims=" %%b in ('type "文件名.txt"') do >>$2 findstr /c:"%%b" $1
  16. for /f "delims=" %%c in ('type $2') do (
  17. for /r "%fdir1%" %%e in (.) do (
  18. set "tdir=%%e"
  19. if exist "!tdir:~0,-1!%%c" >>$3 echo,!tdir:~0,-1!%%c
  20. )
  21. )
  22. for /f "delims=" %%i in ('type $3') do (
  23. set "wdate=%%~ti"
  24. set "wdate=!wdate:~0,4!!wdate:~5,2!!wdate:~8,2!"
  25. if !wdate! geq %date1% if !wdate! leq %date2% (
  26. echo "%%i" 最后修改日期为!wdate!
  27. copy "%%i" "%fdir2%" /y
  28. )
  29. )
  30. del $* /f /q
  31. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-3-2 11:59:50 | 显示全部楼层
回复 19# gxx2002

问题得到解决请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
 楼主| 发表于 2015-3-2 16:43:04 | 显示全部楼层
真的多谢大神!
 楼主| 发表于 2015-3-2 16:45:59 | 显示全部楼层
回复 25# pcl_test


    多谢大神!非常感谢!已经解决了!
 楼主| 发表于 2015-3-2 16:48:01 | 显示全部楼层
回复 24# pcl_test


    用了您的办法,解决了!
   感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 17:56 , Processed in 0.020854 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表