2015-11-20 23 views
1

我創建了兩個名爲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

我不明白它背後的原因。我可以得到任何幫助嗎?

回答

1

當你讓你到SetEnv.bat電話,你已經格式化您的upload_file.bat腳本%DATE%%TIME%變量,所以您的通話內,向SetEnv.bat格式相對於價值觀:

2015 - 11-20(對日)

135220(用於時間)

我不會使用該系統提示和%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%已經有一個值。如果是這樣,它將繼續前進而不進行重新計算。否則,它將計算值。

此方法允許您在一個腳本中設置時間戳,然後所有其他腳本將在不重新定義的情況下使用它,因此您將獲得一致的時間戳。

+0

感謝它現在的作品。 – user5578435

相關問題