我想创建一个批处理文件,通过用户输入复制文本文件。作为输入用户从日期和日期给出。文本文件的名称如下:error_log_04_06_2011
现在我想要数据从04/06/2011到07/06/2011,所以我可以通过使用像这样的xcopy命令来做到这一点
@ECHO OFF
SET / P f =请从日期输入(m-d-yyyy):
SET / P t =请输入日期(mm-dd-yyyy):
mkdir d:\ bkp
xcopy / S / D:%f%/ EXCLUDE:%t%C:\ Emulator \ Log_Data d:\ bkp
这将复制上述日期的所有文件。现在我也想给“约会”日期。所以我可以复制一段时间的文件。
一个approch是我使用delete命令并删除复制的额外文件。但删除命令没有关于日期的任何切换。所以请帮助.....
答案 0 :(得分:0)
不幸的是,在批处理/ cmd内置的这个区域中没有太多可以帮助的东西。 dir可以通过修改时间来取一个标志来输出它的输出,但是我猜你希望它只依赖于文件名,它仍然不会给你你想要的范围。
您显示的文件名不可排序。如果它们以YYYY_MM_DD格式命名,您可以使用sort和for循环找到日期范围内的文件。
如果不这样做,您最终需要进行日期数学运算以生成范围内的每个日期,将每个日期转换为您的文件名格式,并将其传递给复制。
Rob Van Der Woude有一个很好的日期函数列表,包括更难的日期数学。这将是一个很好的起点。 http://www.robvanderwoude.com/battech.php#Time
答案 1 :(得分:0)
我还没有尝试过,但您可以使用xcopy / d和/ l开关生成在特定日期之后过时的文件列表,以避免进行数学运算。
从第一个日期开始的xcopy之后,您可以在第二个日期之后的文件列表中驱动for / l循环中的删除。