我有这个微型Windows脚本每小时执行它基本上每小时创build一个文件,但我需要重命名文件使用date(已经完成),但我不能够添加时间
…..创build我的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
任何想法如何完成那些家伙?
非常感谢
冒号在文件名中无效。 所以,冒出来,我会做以下几点:
(如果你想要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
我不认为你可以在batch file中做到这一点。 但是,您可以使用Windows脚本宿主。 这里是一个例子:
'// 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
一定要自定义datestring,但是你需要它。 这应该不言而喻(但我已经看到人们一次又一次地得到它),这个脚本运行的身份需要有适当的文件权限。