【发布时间】:2018-02-06 05:32:17
【问题描述】:
是否可以使用通配符(而不是硬编码整个文件名)将文件从一个位置复制到另一个位置?另外,我想将 HHSS(小时和秒)附加到文件名。
示例:我们的系统每天都会生成几个文件,名称格式如下:
GL_YYYYMMDD.txt
AP_YYYYMMDD.txt
我想将这些文件复制/移动到另一个名为“Backups”的文件夹并附加 HHSS(小时和秒),因此文件名如下所示:
GL_YYYYMMDDHHSS
AP_YYYYMMDDHHSS
到目前为止我所拥有的:
Rem Determine date
Set mm1=%date:~4,2%
Set dd1=%date:~7,2%
Set yyyy1=%date:~10,4%
REM Determine Time
Set HH=%time:~0,2%
IF "%HH:~0,1%" == " " SET HH=0%HH:~1,1%
Set MM=%time:~3,2%
Set SEC=%time:~6,2%
Set runtime=%HH%%MM%%SEC%
rem Seconday date backup
cd E:\Blackline\DailyFiles
copy GL* E:\Blackline\Backups\"GL*%runtime%"
pause
【问题讨论】:
-
使用
FOR命令列出您要处理的文件。然后,您可以获得要复制到输出的确切输出文件名。 -
问题是,文件名每天都在变化。今天的文件名是 GL_20170828,明天是 GL_20170829,所以我不知道如何将此文件复制到备份文件夹并将 HHSS 添加到其名称中(GL_201708280547)。另外,我对批处理脚本非常陌生。
-
我只能假设
yyyyMMdd与特定文件相关。将当前时间附加到该名称没有任何意义,因为该时间仅与批处理命名过程有关,而不与文件本身有关。使用文件创建时间不是更好、更相关的追加内容吗? -
YYYYMMDD 是从我们的系统创建文件的日期。另外,这也是我们第三方要求的命名格式。这就是我考虑将 HHMM 添加到此名称的原因,以便万一我们必须在一天内因未知原因创建两个文件,可以对其进行处理和保存。
-
在这种情况下需要考虑粒度。是否有可能在同一分钟内生成两个文件? (在这种情况下,可能不会;但这是一个值得提出的问题。)同一秒?同一厘秒?只是对未来使用的想法;您描述的情况表明这确实不太可能成为问题。