【发布时间】:2017-05-04 18:33:47
【问题描述】:
在批处理文件、脚本和一般“编码”方面的经验很少,我很快就遇到了要创建批处理的问题。
情况如下:
我有一个文件夹,其中自动插入 *.txt 文件,我想根据文件的名称将这些文件移动到不同的文件夹中。我用 Robocopy 做了这个,它工作得很好。然后我发现了记录 Robocopy 所做的事情的可能性。 Batch 目前看起来像这样:
robocopy C:\Source C:\Target_Normal file*.txt /xf file022*.txt /mov /log+:LogNo.txt /ns /nc /np /r:1 /w:5
robocopy C:\Source C:\Target_Special file022*.txt /mov /log+:LogNo.txt /ns /nc /np /r:1 /w:3
此批处理必须是 Windows 计划任务的一部分,该任务必须每分钟运行一次。因为要移动的文件很多,logfile很快就会很臃肿。我现在每天都需要一个日志文件,相同的批处理会在新的一天第一次运行时自动创建。当然,如果新创建的日志文件的名称包含它的创建日期,那将是完美的。我想把所有这些都放在 robocopy 行之上。 在伪代码中,我想要这样的东西:
If currentDay has no Logfile yet ->
Create Logfile with Name Log+currentDate ->
else (nothing and continue?)
...如果这有意义的话。我只是不知道如何表达以批量工作。
【问题讨论】:
-
我认为 Robocopy 会在不存在的情况下创建日志,因此请以您喜欢的格式组合日期并将其放入 var 中。
-
看看How to get current datetime on Windows command line, in a suitable format for using in a filename? 另一个提示:使用 Stack Overflow 搜索和搜索词
[batch-file] date time file name。另请参阅How to delete log file after a week? 上的答案。最好关注日志文件大小而不是日志文件的年龄,因为可用的存储介质大小是真正的限制因素,而不是文件的年龄。
标签: windows batch-file cmd robocopy