запись текущей даты и времени в качестве имени файла с использованием NSIS - PullRequest
6 голосов
/ 09 марта 2010

Я разработал установщик, используя NSIS . Каждый раз, когда я переустанавливаю приложение, я хочу создать резервную копию существующих файлов базы данных.

Как я могу переименовать эти файлы базы данных, используя следующий формат 'currentdatetime' (например: 201003101140 означает 2010-03-10 в 11:40 AM)?

Спасибо!

Ответы [ 4 ]

13 голосов
/ 11 февраля 2013

В NSIS есть встроенная функция, которая называется $ {GetTime}

  !include "FileFunc.nsh"
  !insertmacro GetTime

  ${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6
  DetailPrint "currentdatetime=$2$1$0$4$5$6"

Это выведет что-то вроде

  currentdatetime=20130210205537

означает «10 февраля 2013 20:55:37».

6 голосов
/ 09 марта 2010
System::Call '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2)i.s'
System::Call /NOUNLOAD 'kernel32::GetLocalTime(isr0)'
System::Call '*$0(&i2.r1,&i2.r2,&i2,&i2.r3,&i2.r4,&i2.r5,&i2,&i2)'
System::Free $0
IntFmt $1 "%0.4d" $1
IntFmt $2 "%0.2d" $2
IntFmt $3 "%0.2d" $3
IntFmt $4 "%0.2d" $4
IntFmt $5 "%0.2d" $5
DetailPrint "datetime=$1$2$3$4$5"
2 голосов
/ 04 января 2017

Лучший способ сделать это объясняется здесь: nsis !define /date MyTIMESTAMP "%Y-%m-%d-%H-%M-%S" Name "MyApplicationName ${MyTIMESTAMP}" OutFile "MyApplicationNameSetup-${MyTIMESTAMP}.exe"

0 голосов
/ 10 марта 2010

Эти макросы могут работать для вас: http://nsis.sourceforge.net/Docs/Chapter5.html#5.2.3

...