Board logo

标题: [文本处理] [已解决]批处理如何复制指定时间内建立的文本文件 [打印本页]

作者: msconfig    时间: 2009-7-21 13:03     标题: [已解决]批处理如何复制指定时间内建立的文本文件

是这样子的:我的文本文件在Ciamond\test\log\95P4230里面,我平时都是copy全部的文本文件出来到D:Diamond\test\log\95P4230\做备份。即:copy C:Diamond\test\log\95P4230\*.txt D:Diamond\test\log\95P4230\也就是我copy了所有的文件。
现在我指定,只要6月,或7月份建立的的文件。即从1号到31号,我电脑显示时间的格式是2009-07-22。
谢谢大家这么关心我的问题,要是表达得不够清楚,请指正啊,我一直都在线。[

[ 本帖最后由 msconfig 于 2009-7-22 15:38 编辑 ]
作者: Lumiere    时间: 2009-7-21 13:16

没太明白你的意思,最好详细说清楚,比如什么文件夹,怎么个显示格式之类的
作者: msconfig    时间: 2009-7-21 13:34     标题: 回复 2楼 的帖子

*.*是所有格式都行吧,要不就用txt格式。我写简单点:copy Ciamond\test\log\95P4230\*.txt D:Diamond\test\log\95P4230\
我是要copy  C:Diamond\test\log\95P4230下面从7月1号到7月30号生成的txt格式的所有文件。到D:Diamond\test\log\95P4230\这个地方。因为7月1号之前的也有很多文件在95P4230这个文件夹下,我要按时间来copy.
作者: keen    时间: 2009-7-21 16:30     标题: 回复 1楼 的帖子

拷贝的文件是2009.7.1~2009.7.30:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /od /b C:\Diamond\test\log\95P4230\*.txt ') do (
  3.      set d=%%~ti
  4.      set d=!d:-=!
  5.      if !d! geq 20090701 if !d! leq 20090730 xcopy %%i D:\Diamond\test\log\95P4230\
  6. )
  7. pause
复制代码

作者: msconfig    时间: 2009-7-21 18:08

首先谢谢你的帮忙。我刚才试过了,不成功。我想表达得更清楚一些:因为我是做testing 的support的,每test一次,就会有一个log file自动保存在C:\Diamond\test\log\95P4230\下面,每一个log file的名字都是以电子板上面的序列号命名的,这个log file 里面记录了testing过程中的每一个参数,所以要备份给客户。客户是每个月都要一次这些log file的。以前我每一次做的时候 都是手动去C:\Diamond\test\log\95P4230\里面点按时间(Date Modified)先后排列,再选1号到30号的文件copy的。
作者: keen    时间: 2009-7-21 18:49     标题: 回复 5楼 的帖子

你首先要搞清楚,我的代码是复制txt文本文档.

再有,如果你的实验也是TXT文本的话,请把错误信息贴上来.
作者: Batcher    时间: 2009-7-21 20:12     标题: 回复 5楼 的帖子

1、请把所有的背景信息全部更新到顶楼,以便他人查看。

2、涉及到日期时间的问题,最后能把本机的系统日期格式发出来看看:
开始
运行
cmd
echo %date% %time%
作者: keen    时间: 2009-7-22 11:25     标题: 回复 楼主

我4楼的代码你运行出现什么错误现象?没执行成功的表现是什么,请描述一下?
作者: msconfig    时间: 2009-7-22 13:09     标题: 回复 8楼 的帖子

运行后,这是我删掉@后的提示:
C:\Documents and Settings\program\Desktop>echo off  & setlocal enabledelayedexpa
nsion
Press any key to continue . . . .我再去看:\Diamond\test\log\95P4230\里面是空的,时间格式我也改过了,原来是20090701我改成2009-07-01,还是提示上面的请按任意键继续。
作者: keen    时间: 2009-7-22 14:39     标题: 回复 9楼 的帖子

看你的提示,你是把我给你的代码保存后,你放到桌面上,进行运行了。

两种解决方案:
1、把我4楼的代码保存后放到C:\Diamond\test\log\95P4230\目录下,进行双击。补充一点,我4楼的代码没有考虑文件名中含有空格。
2、给我的4楼的代码加上一句,不管你把代码放到哪儿都行。给4楼代码加上一句后,代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. cd /d C:\Diamond\test\log\95P4230
  3. for /f "delims=" %%i in ('dir /od /b C:\Diamond\test\log\95P4230\*.txt ') do (
  4.      set d=%%~ti
  5.      set d=!d:-=!
  6.      if !d! geq 20090701 if !d! leq 20090730 xcopy "%%i" D:\Diamond\test\log\95P4230\
  7. )
  8. pause
复制代码

[ 本帖最后由 keen 于 2009-7-22 14:40 编辑 ]
作者: msconfig    时间: 2009-7-22 15:37     标题: 回复 10楼 的帖子

完全可行,实在是太感谢你了,我一定会努力学习的




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