我有这个每小时执行一次的迷你 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
大家知道如何实现这个目标吗?
多谢
答案1
文件名中的冒号无效。因此,删除冒号后,我会执行以下操作:
(如果您想要带有 AM 或 PM 的 12 小时制时钟)
: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
答案2
我认为您不能在批处理文件中执行此操作。但是,您可以使用 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
一定要根据需要自定义日期字符串。这应该是不言而喻的(但我见过人们一次又一次地被它困扰),运行此脚本的身份需要具有该文件的适当权限。