2011年6月2日 星期四

[InstallShield] installscript parse date time and RenameFile

 This example code displays using GetSystemInfo to get system time, using StrGetTokens to parse date, time and RenameFile to rename files.

///////////////////////////////////////////////
// some defines are not showing here

function RenameDBFile(hMSI)
    STRING     szPath,szFileNameDB,szFileNameDBLog ,svResultDB,svResultLog,strDate,strTime,szRenameDB,szRenameDBLog;
    INT       nvDate,nvTime;
    LIST   listDate, listTime;
    STRING  svDdy, svDmn, svDyr, szDelim,szTimeStamp,svHr, svMin, svSec;
  

begin 
   
   
    GetSystemInfo(DATE, nvDate, strDate);
    GetSystemInfo(TIME, nvTime, strTime);
     
 
     
     listDate = ListCreate (STRINGLIST);
     listTime = ListCreate (STRINGLIST);
     StrGetTokens(listDate,strDate,"-");
    ListGetFirstString(listDate,svDmn);
    ListGetNextString(listDate,svDdy);
    ListGetNextString(listDate,svDyr);
    ListDestroy(listDate);
    StrGetTokens(listTime,strTime,":");
    ListGetFirstString(listTime,svHr);
    ListGetNextString(listTime,svMin);
    ListGetNextString(listTime,svSec);
    ListDestroy(listTime);
    szTimeStamp = "."+svDmn + "_" + svDdy + "_" + svDyr + "_" + svHr+ "_"+svMin+ "_"+svSec;
       
    szPath = ProgramFilesFolder + DB_DATA_PATH;   
    szFileNameDB = DB_FILENAME;
    szFileNameDBLog = DB_LOG_FILENAME;   
    szRenameDB = DB_FILENAME + szTimeStamp + ".bak";
    szRenameDBLog = DB_LOG_FILENAME +  szTimeStamp +".bak";
  
  // Set SRCDIR and TARGETDIR for RenameFile
    SRCDIR = szPath;
    TARGETDIR = szPath; 
                            
   
    if(FindFile(szPath, szFileNameDB, svResultDB) = 0 ) then
          RenameFile(szFileNameDB,szRenameDB); 
                 
        endif;
    if(FindFile(szPath, szFileNameDBLog, svResultLog) = 0 ) then
          RenameFile(szFileNameDBLog,szRenameDBLog);
        endif;

end;

沒有留言:

張貼留言