У меня есть этот мини-скрипт 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
Не забудьте настроить строку даты так, как вам нужно. Само собой разумеется (но я видел, как люди снова и снова укусили), что идентификатор, под которым запускается этот скрипт, должен иметь соответствующие разрешения для файла.