Question

Locked

DOS command HELP!!!

By danday3953 ·
I am writing a short command script and I need to have the directory in which the date is stored labeled as the date. Every time I think I have a new way to do it, it flops. Tried:
echo %date% >> date.txt | mkdir << C:\date.txt and: SET DATE = %date% then mkdir C:\DATE and: a variation of TYPE, SET, and MKDIR commands. Can someone help quickly, or am I doomed to the RIF???

danday3953[at]yahoo[dot]com

This conversation is currently closed to new comments.

4 total posts (Page 1 of 1)  
| Thread display: Collapse - | Expand +

All Answers

Collapse -

Go here for your DOS commands...

DATE
(Internal)

DATE mm-dd-yy

Displays and/or sets the system date.
......................................

http://www.stu.qmul.ac.uk/primer/DOS.html
http://www.easydos.com/dosindex.html


Please post back if you have any more problems or questions.

Collapse -

Using Date and Time in DOS batch files.

by 1bn0 In reply to DOS command HELP!!!

Copy of my notes stored in my yahoo notepad.


Using the current date in a batch file

The date command displays the current date and gives the operator the opportunity to change the current date.

C>date
Tue 06/03/2008
Enter the new date: (mm-dd-yy)
C>

The %date:~% variable returns the current date as a string

C>echo %date:~%
Tue 06/03/2008
C>

The following syntax can be used to extract desired text from the string returned by %date:~%

%date:~(-)X,Y%

% start replacement variable
date:~ get the current date
-x move the cursor (-)X number of characters,0 is apparently the first character, or move back from the end using - numbers.
>
> C>echo %date:~4,2%%date:~7,2%%date:~12,2%
>
> and
>
> C>echo %date:~-10,2%%date:~-7,2%%date:~-2,2%
>
> both return the same result
>
> 060308
>
> C:>
>
> from the date string "Tue 06/03/2008"

, seperator
y display next Y characters from the cursor point
% end replacement variable


Date string Output Extracted from:
%date:~-4,4% 2008 Tue 06/03/2008
^xxxx
%date:~-7,2% 03 Tue 06/03/2008
^xx
%date:~-0,2% Tu Tue 06/03/2008
^xx
%date:~-0,3% Tue Tue 06/03/2008
^xxx
%date:~-10,4% 06/0 Tue 06/03/2008 (Note: the / counts as one of he four characters)

%date:~-10,2% 06 Tue 06/03/2008
^xx
Date string variables can be combine to pull together the various parts YYY MM DD

%date:~-4,4%%date:~-7,2%%date:~-10,2% 20080306

Tue 06/03/2008Tue 06/03/2008Tue 06/03/2008
^xxxx ^xx ^xx

Using the current time in a batch file

The time command displays the current time and gives the operator the opportunity to change the current date.

C>time
The current time is: 9:24:52.64
Enter the new time:
C>

The %time:~% variable returns the current time as a string

C>echo %time:~%
9:59:11.50

C>

Note that windows returns the time to one-one hundreths of a second. ( at least on this machine it does) and there is a space preceding the hour digit,9.


A little bit of extra work is required to ensure hours between 0 and 9 are handled correctly.


*********************************************************************************************************************************************
Reference information obtained from:
http://talk.bmc.com/blogs/blog-gentle/anne-gentle/dos-timestamp-tips/view?searchterm=batch

"this routine works before and after ten in the morning. Silly DOS, it doesn't put a leading zero in unless you tell it to. Here's how to tell DOS to put in the leading zero if the current time is prior to 10:00am."

REM Create sub directory called \yymmdd_hhmmss
REM where yymmdd_hhmmss is a date_time stamp like 030902_134200

set hh=%time:~0,2%

REM Since there is no leading zero for times before 10 am, have to put in
REM a zero when this is run before 10 am.

if "%time:~0,1%"==" " set hh=0%hh:~1,1%

set yymmdd_hhmmss=%date:~12,2%%date:~4,2%%date:~7,2%_%hh%%time:~3,2%%time:~6,2%

md h:\%yymmdd_hhmmss%

*********************************************************************************************************************************************
In English:

Times from midnight, 0:00 a.m. to 9:59 a.m. will return a single digit preceded by a space. It is usually desired to replace the space with a leading zero (0).

To accomplish this an environment variable to correctly reflect the hour in two digits is created using the %time:~% variable.

"if "%time:~0,1%"==" " set hh=0%hh:~1,1%"
if the left most digit is empty then set the environment variable hh to 0 + second digit from the begining.

%time:~% returns " 9:30:08.69"

set hh=09 0 + " 9:30:08.69"

then use %hh% as a variable in your command string to create a second variable with the complete date & time format yuo wish using %hh% to give you the hour in 2 digits.

"set yymmdd_hhmmss=%date:~12,2%%date:~4,2%%date:~7,2%_%hh%%time:~3,2%%time:~6,2%"


simple example , if the extra space in place of the 10's digit in the hour is not a problem:

c>echo The current hour is %time:~-11,2% the current minute is %time:~-8,2% and the current hundreth seconds are %time:~-2,2%

The current hour is 9 the current minute is 55 and the current hundreth seconds
are 26

Collapse -

Kick *** post

by The Altruist In reply to Using Date and Time in DO ...

I was about to suggest something in VBScript, but that one just blows mine away.

Rock on.

Collapse -

Works ok in vbscript as well.

by 1bn0 In reply to Kick ass post

I researched it when I was repeatedly running a script that retrieves the logon script assigned to each user in the active directory.

I used it to add the date onto the filename so I could always identify the most recent version.


I was changing 300 users from logon batch files to one integrated logon.vbs script.

Back to Windows Forum
4 total posts (Page 1 of 1)  

Related Forums