Rename file if exist to file.old.%date%

Hey Experts.  I am running a script that is dumping out data from our AD environment and the data goes into a log file.  I run this script a couple times a week and I have to remember to rename the file .date before running the script.  Because my memory is not the best, I would like the batch script to run and if the log file already exists that the existing file will be renamed to .old.%date%.  Example:

data.log should be renamed to data.old.060413

The format of the date doesn't matter.  It could be julian date or month/date.  I just need it to be renamed.  So far all I have is:

if exist c:\tools\file.log rename c:\tools\file.old.%date%

Open in new window

I appreciate your help!
Who is Participating?
oBdAConnect With a Mentor Commented:
Personally, I'd rename it not to the current date, but rather to the date (and time, if required) that the file was created.
This is currently in test mode and will only display the ren command; remove the uppercase ECHO in line 9 to run it for real. If the time format doesn't fit, please post the result (the file time will be echoed in line 10, you can of course remove this once it works):
@echo off
setlocal enabledelayedexpansion
set LogFile=C:\Tools\file.log
if not exist "%LogFile%" goto SkipRename
for %%f in ("%LogFile%") do (
	for /f "tokens=1-3 delims=/ " %%a in ("%%~tf") do (set TimeStamp=%%c%%a%%b)
	set NewName=%%~nf.old.!TimeStamp!%%~xf
	echo Renaming "%LogFile%" to "!NewName!" ...
	ECHO ren "%LogFile%" "!NewName!"
	ECHO File date: %%~tf

Open in new window

Lee W, MVPTechnology and Business Process AdvisorCommented:
Why not change your script so that every time it runs, the date stamp is part of the file name.

For example:
Lee W, MVPTechnology and Business Process AdvisorCommented:
There are a couple of ways of incorporating the date into a file name - if you are based in the USA with a US style date format, you can reference the date in a batch file using the following format:

That should output a date in the format:
YYYY-MM-DD (best for sorting)

Other methods exist for retrieving the date values and assigning them to a variable for use in a batch file, but this is the quickest if your date variables match mine.
Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

Lee W, MVPTechnology and Business Process AdvisorCommented:
To be clear:
if exist c:\tools\file.log rename c:\tools\file.old.%date:~-4%-%date:4,2%-%date:7,2%
samiam41Author Commented:
Hey leew!!  Great to see you again.

That works for me.  So, how do I do it?  :)

rename file.log
samiam41Author Commented:
Oops.  Looks like you already posted it.  Thanks Leew.  Testing it now.
Steve KnightConnect With a Mentor IT ConsultancyCommented:
For a quick and dirty rename you can also use %date:/=-% to replace any / with - in the date.  Be careful if you schedule it though or run as a different user etc. as it could easily have a different date format and need different %date:...% string editing bits.  For this reason I always use technique like this unless very specific pc/user to run on:

samiam41Author Commented:
leew, when I run your command from a batch script, this is what I get:
C:\Tools>if exist c:\tools\file.log rename c:\tools\file.old.2013-date:4,2date:7,2

Nothing shows up in the directory.
samiam41Author Commented:
oBdA, just entered in your code, removed the safety cap (echo on line 9) and rolled it out.  Worked like I expected!  Thanks.
Steve KnightIT ConsultancyCommented:
For reference Leew just missed two ~ out of the date commands.  You can see what the bits used mean in set /? etc.

if exist c:\tools\file.log rename c:\tools\file.old.%date:~-4%-%date:~4,2%-%date:~7,2%
samiam41Author Commented:
Thanks dragon-it but I'm not sure what I'm doing wrong.  Now I'm getting
"The syntax of the command is incorrect."

I got a solution.  I'll leave it as an Unsolved Mystery.
samiam41Author Commented:
Thanks experts!  Rolling with my solution and on to the next challenge.  Take care guys.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.