Назад | Перейти на главную страницу

Добавить время в сценарий Windows

У меня есть этот мини-скрипт Windows, который выполняется каждый час, он в основном создает файл каждый час, но мне нужно переименовать файл, используя дату (что уже сделано), но я не могу добавить время

..... код, который создает мой файл perfstats01.txt:

SET date="%date:~0,2%-%date:~3,2%-%date:~6,6%"
ren C:\perfstats01.txt "%date%".txt

поэтому я переименую файл perfstats01.txt как это:

07-03-2012_10:30am.txt

или

07-03-2012_13:01.txt

есть идеи, как этого добиться, ребята?

большое спасибо

Двоеточие недопустимо в имени файла. Итак, вынув толстую кишку, я бы сделал следующее:

(если вам нужны 12-часовые часы с AM или PM)

:GetDate
 FOR /F "DELIMS=" %%T IN ('TIME /T') DO SET @TIME=%%T
 FOR /F "TOKENS=2" %%D IN ('DATE /T') DO SET @DATE=%%D
 FOR /F "TOKENS=1-4 DELIMS=-/ " %%D IN ('DATE /T') DO (
     SET @DAY=%%D
     SET @DD=%%F
     SET @MM=%%E
     SET @YYYY=%%G
 )
 SET @HOUR=%@TIME:~0,2%
 SET @SUFFIX=%@TIME:~6,2%
 SET @NOW=%@HOUR%%@TIME:~3,2%
 SET @NOW=%@NOW: =0%
 SET @TODAY=%@YYYY%-%@MM%-%@DD%
ren c:\perfstats01.txt %@DD%-%@MM%-%@YYYY%_%@NOW%%@SUFFIX%.txt

Или вместо этого:

(Если вам нужны 24-часовые часы)

:GetDate
 FOR /F "DELIMS=" %%T IN ('TIME /T') DO SET @TIME=%%T
 FOR /F "TOKENS=2" %%D IN ('DATE /T') DO SET @DATE=%%D
 FOR /F "TOKENS=1-4 DELIMS=-/ " %%D IN ('DATE /T') DO (
     SET @DAY=%%D
     SET @DD=%%F
     SET @MM=%%E
     SET @YYYY=%%G
 )
 SET @HOUR=%@TIME:~0,2%
 SET @SUFFIX=%@TIME:~6,2%
 IF /I "%@SUFFIX%"=="AM" IF %@HOUR% EQU 12 SET @HOUR=00
 IF /I "%@SUFFIX%"=="PM" IF %@HOUR% LSS 12 SET /A @HOUR=%@HOUR% + 12
 SET @NOW=%@HOUR%%@TIME:~3,2%
 SET @NOW=%@NOW: =0%
 SET @TODAY=%@YYYY%-%@MM%-%@DD%

ren C:\perfstats01.txt %@DD%-%@MM%-%@YYYY%_%@NOW%.txt

Я не думаю, что это можно сделать в пакетном файле. Однако вы можете использовать Windows Script Host. Вот пример:

'// Initialize variables
Dim oShell, oFSO, oFile
set oShell = CreateObject("WScript.Shell")
set oFSO = CreateObject("Scripting.FileSystemObject")

'// The ExpandEnvironmentStrings function allows you to pull
'// and save an environment variable!
Set currentDate = oShell.ExpandEnvironmentStrings("%date%")

'// There is no 'rename' function in Windows Script, so use this instead.
set oFile = oFSO.GetFile("c:\oldname.txt")
file.name = "newName.txt"

'// This ensures all file resources are released.
set file = nothing
set fso = nothing

Не забудьте настроить строку даты так, как вам нужно. Само собой разумеется (но я видел, как люди снова и снова укусили), что идентификатор, под которым запускается этот скрипт, должен иметь соответствующие разрешения для файла.