• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3966
  • Last Modified:

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!
0
samiam41
Asked:
samiam41
  • 6
  • 3
  • 2
  • +1
2 Solutions
 
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:
file.date.log
0
 
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:

%date:~-4%-%date:4,2%-%date:7,2%
That should output a date in the format:
2013-06-04
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.
0
 
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%
0
Free recovery tool for Microsoft Active Directory

Veeam Explorer for Microsoft Active Directory provides fast and reliable object-level recovery for Active Directory from a single-pass, agentless backup or storage snapshot — without the need to restore an entire virtual machine or use third-party tools.

 
samiam41Author Commented:
Hey leew!!  Great to see you again.

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

rename file.log file.date.log
0
 
samiam41Author Commented:
Oops.  Looks like you already posted it.  Thanks Leew.  Testing it now.
0
 
Steve KnightIT 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:

http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/MS_DOS/A_1153-Using-dates-in-batch-files-scripts.html

Steve
0
 
oBdACommented:
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
)
:SkipRename

Open in new window

0
 
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.
0
 
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.
0
 
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%
0
 
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.
0
 
samiam41Author Commented:
Thanks experts!  Rolling with my solution and on to the next challenge.  Take care guys.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 6
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now