Robocopy 在复制过程中向文件名添加日期

问题描述 投票:0回答:1

我有这段代码可以从一个位置复制到另一个位置。有没有一种方法可以在文件名中添加日期\时间。文件夹中只有一个csv文件,名字时不时会变。我发现如果已经有同名文件,它不会复制文件。最好复制 .csv 并以某种方式添加日期\时间。

Robocopy "D:\BACnet-CSV\Temp" "D:\BACnet-CSV\Test csv files\Test1" *.csv /njh /njs /ts /np /ns /log+:D:\BACnet-CSV\Copy_Log.txt
echo Robocopy exit: %ERRORLEVEL% %DATE% %TIME% >>D:\BACnet-CSV\Copy_Log.txt

在网上寻找解决方案并尝试了几件事但没有成功。

batch-file robocopy
1个回答
0
投票

Robocopy 不提供在复制时重命名文件的选项。如果你想在你的副本上有一个时间戳,你可以通过两种方式做到这一点 - 或者说 Robocopy 使用带时间戳的文件夹来保存副本,或者用 FOR 循环一个一个地重命名复制的文件(这违背了 robocopy 的目的有点——如果需要,我会对此进行扩展)。

无论哪种方式,您都需要为此设置时间戳。如果您的任务按每日计划进行,则使用当前日期就足够了:

set TIMESTAMP=%DATE:/=.%
set TIMESTAMP=%TIMESTAMP:.=-%

然后用它来告诉 robocopy 把文件放在哪里:

Robocopy "D:\BACnet-CSV\Temp" "D:\BACnet-CSV\Test csv files\Test-%TIMESTAMP%" *.csv /njh /njs /ts /np /ns /log+:D:\BACnet-CSV\Copy_Log.txt

注意: 获得有用时间戳的可能性有很多,我建议在 Windows CMD 批处理脚本中给这个Filename timestamp getting truncated 一个很好的阅读。

© www.soinside.com 2019 - 2024. All rights reserved.