【问题标题】:Create File with current Date in Filename + Robocopy logging在文件名 + Robocopy 日志记录中创建具有当前日期的文件
【发布时间】: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?)

...如果这有意义的话。我只是不知道如何表达以批量工作。

【问题讨论】:

标签: windows batch-file cmd robocopy


【解决方案1】:

此批次演示如何使用 wmi 获取实际日期,并将 ISO 日期时间拆分为您可以根据自己的喜好组装的部分。

@Echo off
SetLocal EnableExtensions EnableDelayedExpansion
:: Get Local date time 
for /f "tokens=1-3 delims=.+-" %%A in (
  'wmic os get LocalDateTime^|findstr ^^[0-9]'
    ) do Set _DT=%%A
Set "_yy=%_DT:~0,4%" & Set "_MM=%_DT:~4,2%"  & Set "_dd=%_DT:~6,2%"
Set "_hh=%_DT:~8,2%" & Set "_nn=%_DT:~10,2%" & Set "_ss=%_DT:~12,2%"
:: Put your date time elements together
::            %_DT:~0,8%  is yyyyMMdd
Set LogNo=Log_%_DT:~0,8%.txt
set _

Echo Logfile is : %LogNo%
Pause

robocopy C:\Source C:\Target_Normal file*.txt /xf file022*.txt /mov /log+:%LogNo% /ns /nc /np /r:1 /w:5
robocopy C:\Source C:\Target_Special              file022*.txt /mov /log+:%LogNo% /ns /nc /np /r:1 /w:3

【讨论】:

  • 正是我要找的,完美,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多