如何将除最新文件之外的所有文件移动到文件夹?

时间:2010-07-13 19:29:14

标签: windows batch-file move

我有一个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),因为此文件有时仍在写入并移动它可能导致目标文件夹中的文件覆盖在下一次运行批处理时,会导致文件内容丢失。

非常感谢有关此案例的任何想法。

2 个答案:

答案 0 :(得分:3)

我认为这个批处理脚本可能会这样做:

dir /TW /O-D /A-D /B > %TEMP%\tempFiles.txt
for /F "skip=1" %f IN (%TEMP%\tempFiles.txt) DO mv %f wherever
del %TEMP%\tempFiles.txt

解释这是做什么的:

  1. 是否有文件列表,已排序 通过修改时间(最新的第一个)“/ TW / O-D”,跳过目录“/ A-D”并存储 一个临时文件。
  2. 遍历临时文件的每一行,跳过 执行mv命令的第一行(最新文件) 在每一个。
  3. 删除临时文件。
  4. 修改: 根据评论,这是一行版本 - 您可以将dir命令插入for循环:

    for /F "skip=1" %f IN ('dir /TW /O-D /A-D /B') DO mv %f wherever
    

答案 1 :(得分:0)

查看windows for命令行函数(您将对使用'command'的/ F运算符感兴趣)。您应该能够将{b和/ o选项与dir一起使用来生成所需的文件列表。然后使用变量跳过第一个(即最新的,假设您的排序顺序正确),应该是它。我目前不在我的Windows PC上,很遗憾我无法用勺子给你准确的答案:)