用于移动文件的dos批处理文件

时间:2012-01-11 15:23:05

标签: batch-file

有没有办法根据日期将目录中的文件(我们有170万)移动到文件夹? 想要将1-1-2010和2-1-2010之间创建的所有文件移动到特定文件夹

2 个答案:

答案 0 :(得分:2)

您可以使用Robocopy功能。它是Windows Vista和Windows 7中的默认设置,您可以在微软网站的Windows XP中下载它。

如果您的Windows是64位,它甚至可以移动路径长度超过256个字符的文件,这与Windows资源管理器上的CTRL + C,CTRL + V不同(我无法理解为什么)。要查看程序帮助,您可以在DOS提示符中编写以下内容(例如,通常您无法写入根目录):

robocopy /? > c:\robocopyhelp.txt

使用开关“/ MINAGE”设置要复制/移动的文件的最小年龄,使用“/ MAXAGE”设置最大年龄。

我以前从未移动文件,也从未尝试按年龄过滤它们,但我认为语法应该是(例如,从驱动器F到G,只有2011文件):

robocopy F:\ G:\ /MOVE /MAXAGE:20110101 /MINAGE:20111231

加上“robocopy /?”中描述的其他参数。通常我添加“/ R:0 / W:0”,因为它不会尝试访问系统文件(如果您以管理员权限运行批处理文件可以提供帮助)100万次,每个系统文件的等待时间为2秒无法复制/移动(仅限pagefile.sys和hiberfil.sys为200万秒或23天)。并且“/ A-:H”切换为取消隐藏隐藏文件。

还要记住NTFS Junctions(C:\ users目录中的无限循环)和加密目录的存在,并使用相应的开关。

答案 1 :(得分:0)

这不是很好,但你可以使用forfiles两次。一旦将日期大于2010-01-01的所有文件移动到该文件夹​​,第二次移动日期大于2010的所有文件 - ?? - ?? (无法可靠地解析您的日期格式)回到原始文件夹。

绝对不是很好。