批处理文件,用于复制在标题中使用时间戳创建的单个文件

时间:2014-01-10 21:03:05

标签: datetime batch-file cmd copy filenames

我正在编写批次,让他们称之为批次A和批次B.批次A对本地源区域和云目标区域运行多次库存检查。然后它将文件移动到云端并重新运行库存检查(dir,aws s3 ls)。库存检查对于批次B中的日志记录非常重要。

批次B看起来像这样;

@echo off
SET HMSH=%TIME::=%
SET HMSH=%HMSH:.=%

SET MM=%DATE:~4,2%
SET DD=%DATE:~7,2%
SET YYYY=%DATE:~10,4%

SET YMD=%YYYY%%MM%%DD%
SET STAMP=%YMD%%HMSH%
Echo TIME "STAMP" SET TO TITLE THE LOG FILE
@ECHO ON
c:\Users\User\Desktop\BatchA.bat >c:\Users\User\Desktop\AWS\Log_Testing\%STAMP%_NIGHTLYS3.log

COPY c:\Users\User\Desktop\AWS\Log_Testing\%STAMP%_NIGHTLYS3.log J:\AWSNIGHTLYS3LOGS\

在我设置STAMP的地方,然后使用在Log_Testing中生成的日志运行BATCHA.bat,该日志在字段名称中使用%STAMP%。

我的逻辑和任务流似乎是正确的,因为COPY命令应该根据在此批处理中生成的STAMP函数查找确切的文件(并且仅限该文件,以避免一遍又一遍地复制和重写数百个文件)运行时间(应该保持不变,因为它是SET,因为它是第一次设置时)。

我可以测试这个文件的唯一方法(100%直到Copy命令)是运行它并在最后一行的目的地中查找复制的文件。

失败了,有什么想法吗?

谢谢大家,对不起,我在上个月一直在IT公司学习这个。我是一个营销专业哈哈,不知道我是怎么在这里结束的。

3 个答案:

答案 0 :(得分:2)

嗯。现在我们需要有人来运行我们的计算机系统。谁最好?哦!当然是市场营销人员!

您的问题是调用批处理文件传输控制到该批处理文件,因此c:\Users\User\Desktop\BatchA.bat ...永远不会返回。

你需要

call c:\Users\User\Desktop\BatchA.bat....

答案 1 :(得分:0)

此调试代码将帮助您缩小故障范围:

也许有一个空间不应该是一个。

SET STAMP=%YMD%%HMSH%
echo "%stamp%"
pause
Echo TIME "STAMP" SET TO TITLE THE LOG FILE
@ECHO ON
c:\Users\User\Desktop\BatchA.bat >c:\Users\User\Desktop\AWS\Log_Testing\%STAMP%_NIGHTLYS3.log
if not exist "c:\Users\User\Desktop\AWS\Log_Testing\%STAMP%_NIGHTLYS3.log" (
echo look for a file called "c:\Users\User\Desktop\AWS\Log_Testing\%STAMP%_NIGHTLYS3.log" 
pause
)

答案 2 :(得分:0)

谢谢大家的帮助,我找到了解决方案。 问题是机器将到达下一行(COPY)并在最后一行最终确定日志文件时开始运行。

我加载了几个DIR语句,在最后一行之前暂停(避免在每个CMD上加载新命令)。

修复了此操作的最后阶段,现在文件被复制到正确的位置。

再次感谢大家的帮助,帮助我从不同的角度看问题。

-Jon