On Windows Server 2003
The following batch file below will rename a file called: filename.txt
to filenameDate.txt
*where date = todays date and is displayed as
MMDDYYYY (MM=Month DD = Day YYYY = year)
::BATCH FILE
@echo off
set today=%date:~4%
for %%a in ("filename.txt") do ren "%%~a" "%%~na%today:/=%%%~xa" ::END BATCH
The batch file runs daily and will always rename the file to the today's date.
I need to display the date as YYYYMMDD (year month day) instead of MMDDYYYY.
so the file will be renamed filenameYYYYMMDD.txt. Any ideas on how to do this? Thanks.
I can't post a link at the mo. Because on mobile but I have written an article here on how to do such things. Using %date%a variable is pretty unreliable as the date format can be all sorts of things, and at the moment your says to take 4 chars off the beginning and then change any /adding chars to -. It wont add 0's when it is 1 March say and if the date doesnt have week day at start more issues...
So personally I nearly always use a one line vbscript in the batch file. Really easy to do and 100% reliable as VBscript does dates natively.
If you click on my dragon-it link you should be able to see the article details. There are examples in there to get you any date and time format you want.
@qlemo. I get an error when trying to run your batch file:
error:
The following usage of the path operator in batch-parameter
substitution is invalid: %~xa"
fjkaykr11
ASKER
@TDLewis. Thanks for your reply. When I try your method:
@echo off
set today=for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set year=%%c
for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set month=%%a
for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set day=%%b
set today=%year%%month%%day%
for %%a in ("filename.txt.txt") do ren "%%~a" "%%~na%today:/=%%%~xa"
The file gets renamed but not with the year. I get the following
filename1226.txt I need it to be renamed to filename20121226.txt for today's date.
You see my point then perhaps about why not to use date /T or %date% .... different machine, different user, language, date format (ddd dd/mm/yyyy, mm/dd/yyyy etc. And it breaks.
Qlemo
Dragon is correct about the fragile usage of %date% and date /t. In a restricted environment it works as expected, but it might not work on other machines.
My code was only missing one out of 3 percent signs:
@echo offREM %date% is ddd, mm/dd/yyyyset yyyymmdd=%date:~-4%%date:~-10,2%%date:~-7,2%for %%a in ("filename.txt") do ren "%%~a" "%%~na%yyyymmdd%%%~xa"
So personally I nearly always use a one line vbscript in the batch file. Really easy to do and 100% reliable as VBscript does dates natively.
If you click on my dragon-it link you should be able to see the article details. There are examples in there to get you any date and time format you want.
Steve