StampMe.cmd

Rename a file (or folder) by appending the current date and time to the existing filename:

  @ECHO off
  SETLOCAL
  IF [%1] NEQ [] goto s_start

  :: Author - Simon Sheppard, Nov 2014
  :: Tested for Windows XP Pro or greater
  Echo StampMe.cmd
  Echo Rename a file with the DATE/Time
  Echo:
  Echo Syntax
  Echo    STAMPME TestFile.txt
  Echo:
  Echo    STAMPME "Test File.txt"
  Echo:
  Echo    STAMPME "c:\docs\Test File.txt"
  Echo:
  Echo    Will rename the file in the format "Test File-2014-12-30@16-55-01.txt"
  Echo:
  Echo    In a batch file use CALL STAMPME ...
  GOTO :eof
  
  :s_start
  Set _file=%~n1%
  Set _pathname=%~f1%
  Set _ext=%~x1%
  
  :: Get the date/time
  FOR /f %%a in ('WMIC OS GET LocalDateTime ^| find "."') DO Set _DTS=%%a
  Set _datetime=%_DTS:~0,4%-%_DTS:~4,2%-%_DTS:~6,2%@%_DTS:~8,2%-%_DTS:~10,2%-%_DTS:~12,2%

  Echo   Year-MM-Day@HR-Min-Sec
  Echo   %_datetime%
  
  :: Rename the file
  REN "%_pathname%" "%_file%-%_datetime%%_ext%"

The last line of the batch file does the REName.

Examples

c:\> StampMe "sample file.txt"
c:\> StampMe "C:\logs\data\errorlog.txt"
c:\> StampMe "C:\docs\example folder"

An alternative 'quick and dirty' way to do the same thing in one line is shown below, this does work but is less robust as the results will vary according to regional/control panel settings.

c:\> REN "sample file.txt" "* %Date:/= % %Time::=.%.*"

“The time you enjoy wasting is not wasted time” ~ Bertrand Russell

Related

DelOlder.cmd - Delete files more than n days old
GetDate and GetTime scripts
Standard date and time notation - YYYY-MM-DD
Stampme.ps1 - Powershell version


© Copyright SS64.com 1999-2014
Some rights reserved