Batch File Timestamp - Windows NT

This is a discussion on Batch File Timestamp - Windows NT ; "Stephen" wrote in message news:08d401c379d1$b8864980$a101280a@phx.gbl... > > >-----Original Message----- > >Stephen wrote: > > > >> I'm trying to create a batch file that will rename > another > >> file and include a timestamp in the file name. For ...

+ Reply to Thread
Results 1 to 2 of 2

Thread: Batch File Timestamp

  1. Batch File Timestamp

    "Stephen" wrote in message
    news:08d401c379d1$b8864980$a101280a@phx.gbl...
    >
    > >-----Original Message-----
    > >Stephen wrote:
    > >
    > >> I'm trying to create a batch file that will rename

    > another
    > >> file and include a timestamp in the file name. For
    > >> example, incoming file is named MyTestFile.dat and I

    > want
    > >> to rename it to MyTestFile-180623.dat
    > >>
    > >> Any advice would be appreciated I'm sure it's quite a
    > >> simple line or two of code. Thanks.

    > >
    > >C:\cmd>\temp\xtime
    > >ren Testfile.dat Testfile-104020.dat
    > >
    > >C:\cmd>rlist \temp\xtime.cmd
    > >=====begin C:\temp\xtime.cmd ====================
    > >1. @echo off
    > >2. for /f "tokens=1-3 delims=:." %%a in (
    > >3. "%time%") do echo ren Testfile.dat Testfile-%%a%%b%%

    > c.dat
    > >=====end C:\temp\xtime.cmd ====================
    > >
    > >Remove the word 'echo' from line 3 if this does what you

    > intend.
    > >
    > >--
    > >Phil Robyn
    > >Univ. of California, Berkeley
    > >
    > >u n z i p m y a d d r e s s t o s e n d e - m a

    > i l
    > >
    > >.
    > >

    >
    > Phil,
    >
    > thanks for this, it's proved most useful. However, when I
    > remove the 'echo' as suggested and run the script it
    > returns an error 'The syntax of the command is
    > incorrect'. When I view it in the command window it looks
    > fine to me.
    >
    > I'm using the following line of code
    >
    > for /f "tokens=1-5 delims=/:." %%a in ("%date%%time%") do
    > ren D:\MyTestFile.txt D:\MyTestFile-%%a%%b%%c%%d%%e.dat
    >
    > The command window returns
    >
    > D:\>ren D:\MyTestFile.txt D:\MyTestFileSat 13092003
    > 93014.dat
    > The syntax of the command is incorrect
    >
    > Does anyone have any further advice? I'd also like to
    > know how to trim out the spaces from the filename. Thanks.


    This is happening because the builtin %date% and %time% variables perform
    INCONSISTENTLY. They vary based on the operating system version and the
    regional date/time settings.

    There are three problems with using %date% and %time% for this purpose:

    1. In your specific case, the Day Of Week is present in
    %date%, so it is returning "Sat dd-mm-yyyy".
    Type "ECHO ___%date%___" at a command prompt to see it.

    2. %time% does not pad the hours with a zero when they are
    less than 10. This will cause your file to be renamed
    INCONSISTENTLY. For example:

    MyTestFile1309200393014.dat {at 9:30am}
    MyTestFile13092003103014.dat {at 10:30am}

    Using the format "yyyymmddhhmnss", which represents

    yyyy = four digit year
    mm = two digit month (padded with zero for
    months less than 10)
    dd = two digit day
    hh = two digit hour {padded with zero for
    hours less than 10}
    mn = two digit minute
    ss = two digit seconds

    will give you

    MyTestFile20030913093014.dat {at 9:30am}
    MyTestFile20030913103014.dat {at 10:30am}

    which will always sort correctly for you.

    3. The solution will only work in Windows 2000, XP and Server 2003.
    The %date% and %time% variable are not available under Windows NT.

    *******

    The Mount/\Commands GetLogDate and GetLogTime overcome all three of these
    problems for yourself (with your specific problem), and for anyone else who
    would need to solve the same problem on their system at a later date.

    GetLogDate CONSISTENTLY returns yyyymmdd
    and saves the value to %#LogDate%

    GetLogTime CONSISTENTLY returns hhmnss
    and saves the value to %#LogTime%


    For an easier to understand example, see
    (http://TheSystemGuard.com/MtCmds/Get...GetLogDate.htm) and
    (http://TheSystemGuard.com/MtCmds/Get...GetLogTime.htm)

    *******

    -tsg
    __________________________________________________ __________
    TheSystemGuard.com | BoomingOrFuming.com | MountCommands.com
    Free and "Almost Free" Knowledge for Windows System Admins!



  2. Re: Batch File Timestamp

    Roger Grossenbacher wrote:
    > "Stephen" wrote in message
    > news:08d401c379d1$b8864980$a101280a@phx.gbl...
    >
    >>
    >> >-----Original Message-----
    >> >Stephen wrote:
    >> >
    >> >> I'm trying to create a batch file that will rename

    >> another
    >> >> file and include a timestamp in the file name. For
    >> >> example, incoming file is named MyTestFile.dat and I

    >> want
    >> >> to rename it to MyTestFile-180623.dat
    >> >>
    >> >> Any advice would be appreciated I'm sure it's quite a
    >> >> simple line or two of code. Thanks.
    >> >
    >> >C:\cmd>\temp\xtime
    >> >ren Testfile.dat Testfile-104020.dat
    >> >
    >> >C:\cmd>rlist \temp\xtime.cmd
    >> >=====begin C:\temp\xtime.cmd ====================
    >> >1. @echo off
    >> >2. for /f "tokens=1-3 delims=:." %%a in (
    >> >3. "%time%") do echo ren Testfile.dat Testfile-%%a%%b%%

    >> c.dat
    >> >=====end C:\temp\xtime.cmd ====================
    >> >
    >> >Remove the word 'echo' from line 3 if this does what you

    >> intend.
    >> >
    >> >-- >Phil Robyn
    >> >Univ. of California, Berkeley
    >> >
    >> >u n z i p m y a d d r e s s t o s e n d e - m a

    >> i l
    >> >
    >> >.
    >> >

    >>
    >> Phil,
    >>
    >> thanks for this, it's proved most useful. However, when I
    >> remove the 'echo' as suggested and run the script it
    >> returns an error 'The syntax of the command is
    >> incorrect'. When I view it in the command window it looks
    >> fine to me.
    >>
    >> I'm using the following line of code
    >>
    >> for /f "tokens=1-5 delims=/:." %%a in ("%date%%time%") do
    >> ren D:\MyTestFile.txt D:\MyTestFile-%%a%%b%%c%%d%%e.dat
    >>
    >> The command window returns
    >>
    >> D:\>ren D:\MyTestFile.txt D:\MyTestFileSat 13092003
    >> 93014.dat
    >> The syntax of the command is incorrect
    >>
    >> Does anyone have any further advice? I'd also like to
    >> know how to trim out the spaces from the filename. Thanks.

    >
    >
    > This is happening because the builtin %date% and %time% variables perform
    > INCONSISTENTLY. They vary based on the operating system version and the
    > regional date/time settings.
    >
    > There are three problems with using %date% and %time% for this purpose:
    >
    > 1. In your specific case, the Day Of Week is present in
    > %date%, so it is returning "Sat dd-mm-yyyy".
    > Type "ECHO ___%date%___" at a command prompt to see it.
    >
    > 2. %time% does not pad the hours with a zero when they are
    > less than 10. This will cause your file to be renamed
    > INCONSISTENTLY. For example:
    >
    > MyTestFile1309200393014.dat {at 9:30am}
    > MyTestFile13092003103014.dat {at 10:30am}
    >
    > Using the format "yyyymmddhhmnss", which represents
    >
    > yyyy = four digit year
    > mm = two digit month (padded with zero for
    > months less than 10)
    > dd = two digit day
    > hh = two digit hour {padded with zero for
    > hours less than 10}
    > mn = two digit minute
    > ss = two digit seconds
    >
    > will give you
    >
    > MyTestFile20030913093014.dat {at 9:30am}
    > MyTestFile20030913103014.dat {at 10:30am}
    >
    > which will always sort correctly for you.
    >
    > 3. The solution will only work in Windows 2000, XP and Server 2003.
    > The %date% and %time% variable are not available under Windows NT.
    >
    > *******
    >
    > The Mount/\Commands GetLogDate and GetLogTime overcome all three of these
    > problems for yourself (with your specific problem), and for anyone else who
    > would need to solve the same problem on their system at a later date.
    >
    > GetLogDate CONSISTENTLY returns yyyymmdd
    > and saves the value to %#LogDate%
    >
    > GetLogTime CONSISTENTLY returns hhmnss
    > and saves the value to %#LogTime%
    >
    >
    > For an easier to understand example, see
    > (http://TheSystemGuard.com/MtCmds/Get...GetLogDate.htm) and
    > (http://TheSystemGuard.com/MtCmds/Get...GetLogTime.htm)
    >
    > *******
    >
    > -tsg
    > __________________________________________________ __________
    > TheSystemGuard.com | BoomingOrFuming.com | MountCommands.com
    > Free and "Almost Free" Knowledge for Windows System Admins!
    >
    >


    Who is Roger Grossenbacher?

+ Reply to Thread