![如何将除最新文件之外的所有文件移动到文件夹中?](https://linux22.com/image/518679/%E5%A6%82%E4%BD%95%E5%B0%86%E9%99%A4%E6%9C%80%E6%96%B0%E6%96%87%E4%BB%B6%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E7%A7%BB%E5%8A%A8%E5%88%B0%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%EF%BC%9F.png)
我有一个 Windows 框和一个包含此类文件的文件夹:
2010-07-04 20:18 81 in01_Acct_20100704001.r
2010-07-07 05:45 165 in01_Acct_20100706001.r
2010-07-07 19:41 82 in01_Acct_20100707001.r
2010-07-07 10:02 81 in01_Acct_20100707002.r
2010-07-08 08:31 89 in01_Acct_20100708001.r
2010-07-10 04:51 82 in01_Acct_20100709001.r
并且我想使用批处理定期将所有这些文件移动到除最新文件夹(即in01_Acct_20100709001.r)之外的另一个文件夹,因为此文件有时仍在被写入并且移动它可能会导致批处理下次运行时目标文件夹中的文件覆盖,并导致文件内容丢失。
任何关于此案的想法都将不胜感激。
答案1
在此发布 suyao 的回答:
for /F "skip=1" %f IN ('dir /TW /O-D /A-D /B') DO move %f wherever
简单的解释是 DIR 命令中已预先构建日期排序。
/T (has W implied would work as well) sorts based on time Last Written
/O sets the order, -D = By Date/Time, in reverse order
/A-D only entries that are NOT directories (hence files)
/B returns simply the filename
“skip=1”意味着代码应该忽略返回的最上面一行,而且由于文件顺序正确,所以那将是最新的文件。