我正在编写批次,让他们称之为批次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公司学习这个。我是一个营销专业哈哈,不知道我是怎么在这里结束的。
答案 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