我创建了两个名为SetEnv.bat和Upload_File.bat的批处理文件。 upload_file.bat包含要先调用的SetEnv.bat,然后处理其他行。
SetEnv.bat:
@echo off
REM SET LOGFILE
SETLOCAL
SET DATE=%DATE:~-4%-%DATE:~-7,-5%-%DATE:~-10,-8%
SET TIME=%Time:~0,2%%Time:~3,2%%Time:~6,2%
SET LOGFILE=%~dp0\Logs\SetEnv_%DATE%-%TIME%.log
CALL :Logit > %LOGFILE%
EXIT /b 0
:Logit
REM SET PARAMETERS
SET LOGINID=******
SET PASSWORD=C:\Users\xyz\pwd.epw
SET URL=https://example.com
SET DOMAIN=abc
REM APPLICATION LOGIN`enter code here`
CALL epmautomate login %LOGINID% %PASSWORD% %URL% %DOMAIN%
IF %ERRORLEVEL% NEQ 0 (
ECHO Login into source environment failed with error %ERRORLEVEL%.
GOTO :END
)
:END
SET returnValue=%ERRORLEVEL%
EXIT /B %returnValue%
upload_file.bat:
@echo off
REM SET LOGFILE
SETLOCAL
SET DATE=%DATE:~-4%-%DATE:~-7,-5%-%DATE:~-10,-8%
SET TIME=%Time:~0,2%%Time:~3,2%%Time:~6,2%
SET LOGFILE=%~dp0\Logs\Upload_GL_%DATE%-%TIME%.log
CALL :Logit > %LOGFILE%
EXIT /b 0
:Logit
REM LOGIN TO APPLICATION
CALL SetEnv.bat
REM OTHER LINES OF CODES
---------------------
---------------------
---------------------
现在问题是当我在Upload_file.bat之外运行SetEnv.bat时,它创建日志文件为SetEnv_2015-11-20-135220.log
但是当我在upload_file.bat中调用它时,日志显示SetEnv_1-20-5--20-1444
。
我没有理由背后的原因。我能得到任何帮助吗?
答案 0 :(得分:1)
当您致电SetEnv.bat
时,您已经在%DATE%
脚本中格式化了%TIME%
和upload_file.bat
个变量,因此您在通话中应用了格式SetEnv.bat
与价值观有关:
2015-11-20(日期)
135220(时间)
我建议不要使用系统%Date%
和%Time%
变量 - 而是使用您自己的变量,以便检测它们是否已经设置:
IF NOT DEFINED LogDATE SET LogDATE=%DATE:~-4%-%DATE:~-7,-5%-%DATE:~-10,-8%
IF NOT DEFINED LogTIME SET LogTIME=%Time:~0,2%%Time:~3,2%%Time:~6,2%
SET LOGFILE=%~dp0\Logs\Upload_GL_%LogDATE%-%LogTIME%.log
以上内容将首先检查%LogDATE%
和%LogTIME%
是否已有值。如果是这样,它将继续前进而不重新计算。否则它将计算值。
此方法允许您在一个脚本中设置时间戳,然后所有其他脚本将使用它而无需重新定义,因此您将获得一致的时间戳。