Forfiles,移动在[* Month]

时间:2016-08-10 08:18:57

标签: windows date powershell batch-file cmd

我的forfiles语法有问题。我想写一个简单的forfiles命令,它将:

  1. 选择在1月,2月,3月等修改过的文件
  2. 将这些文件移动到另一个文件夹。
  3. 但我在编写正确的语法方面遇到了问题。这是我此时写的内容。

    forfiles /m *.file /d (What do I write here?) /C "cmd /c move @file C:\Users\User1\Desktop\New folder"
    

    修改日期的格式为:DD/MM/YYYY

2 个答案:

答案 0 :(得分:2)

除非您可以按相反的顺序处理月份列表(首先使用SetFile移动文件,然后使用forfiles,否则我认为/d +07/08/2016可能无法满足您的需求。 ,然后是/d +01/07/2016,等等。

如果PowerShell是一个选项,你可能会有更好的运气,例如像这样:

/d +01/06/2016

答案 1 :(得分:0)

要过滤掉在某个月(2016年6月,在以下示例中)修改的所有文件,您可以使用两个嵌套的forfiles循环,其中外部循环传递在第一天或之后修改的所有文件。月份到内部的一个月,它返回在月的最后一天或之前修改的所有项目:

> nul 2>&1 forfiles /D +01/06/2016 /C "forfiles forfiles /M @file /D -30/06/2016 /C 0x22cmd /C if @isdir==FALSE > con echo @fdate0x09@ftime0x09@path0x22"

此脚本返回匹配文件的列表及其修改日期和时间。要将文件移动到另一个目录(例如,C:\Backup\June-2016),命令行如下所示:

> nul 2>&1 forfiles /D +01/06/2016 /C "forfiles forfiles /M @file /D -30/06/2016 /C 0x22cmd /C if @isdir==FALSE move 00x7822@path00x7822 00x7822C:\Backup\June2016\\@file00x78220x22"

重定向避免forfiles输出空行和错误消息。