由于对批处理文件、脚本和一般“编码”的经验很少,我很快就遇到了我想要创建的批处理的问题。
情况如下:
我有一个文件夹,其中自动插入 *.txt 文件,我想根据文件的名称将这些文件移动到不同的文件夹。我用 Robocopy 做了这个,效果很好。然后我发现可以记录 Robocopy 所做的事情。
该批次目前如下所示:
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 计划任务的一部分,必须每分钟运行一次。由于需要移动的文件很多,日志文件很快就会变得非常臃肿。我现在每天都需要一个日志文件,同一批处理在新的一天第一次运行时会自动创建该日志文件。当然,如果新创建的日志文件的名称包含其创建日期,那就完美了。我想把所有这些都放在 robocopy 行之上。
在伪代码中,我想要这样的东西:
If currentDay has no Logfile yet ->
Create Logfile with Name Log+currentDate ->
else (nothing and continue?)
...如果那有意义的话。我只是不知道如何表达批量工作。
此批处理演示了如何使用 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)