Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does :: (double colon) mean in DOS batch files?

Tags:

batch-file

I found this program web.archive.org: http://baiyunmanor.com/blog/work/get-current-date-time-in-dos-batch-file/

:::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: :: This uses Windows Scripting Host to set variables :: to the current date/time/day/day_number :: for Win9x/ME/NT/W2K/XP etc :: Thanks go to Todd Vargo for his scripting :::::::::::::::::::::::::::::::::::::::::::::::::::::::: @echo off set TmpFile=”%temp%.\tmp.vbs” echo> %TmpFile% n=Now echo>>%TmpFile% With WScript echo>>%TmpFile% .Echo “set year=” + CStr(Year(n)) echo>>%TmpFile% .Echo “set yr=” + Right(Year(n),2) ... cscript //nologo “%temp%.\tmp.vbs” > “%temp%.\tmp.bat” call “%temp%.\tmp.bat” ... echo date F [ddmmyy] [%day%%month%%yr%] :: datetime.bat 

But I don't know what does the line

:: datetime.bat 

at the end mean?

like image 274
user310291 Avatar asked May 19 '13 07:05

user310291


People also ask

What does colon mean in batch file?

:LABEL. By adding a colon in front of a word, such as LABEL, you create a category, more commonly known as a label. A label lets you skip to certain sections of a batch file such as the end of the batch file.

What does colon mean in CMD?

The colon in the set command is used for string substitution.

What does the symbol do in batch files?

The @ symbol tells the command processor to be less verbose; to only show the output of the command without showing it being executed or any prompts associated with the execution. When used it is prepended to the beginning of the command, it is not necessary to leave a space between the "@" and the command.


Video Answer


2 Answers

:: is a label (inaccurately also known as comment label) can be, in practice, considered a comment just as REM is, because it is an "un-goto-able" label.

There are some differences between REM and ::, though. The main ones are:

  • With ECHO ON a REM line is shown but not a line commented with ::

  • A :: can execute a line end caret (that is, a ^ at the end of a line starting with :: makes the next line also a comment):

     :: This is a comment^  echo but watch out because this line is a comment too 
  • Labels and :: have a special logic and can cause problems in parentheses blocks - take care when using them inside ( ). Example:

     for %%D in (hi) do (      echo Before...      :: My comment      :: Some other comment      echo After...  ) 

    Outputs:

     Before ...  The system cannot find the drive specified.  After... 
like image 196
acdcjunior Avatar answered Oct 10 '22 07:10

acdcjunior


A line that start in double colon represent an invalid label that is ignored by the command processor, so it may be used to insert a comment. For reasons that can't be traced, many people use :: to insert comments in Batch files, but you must be aware that there are several pitfalls in its use that are described in the link given in Koterpillar's answer. It seems that the first use of :: instead of REM command was with the purpose to speed up the execution of Batch files in slow machines (ie: floppy disks), but that reason is not a valid justification for the use of double colon since many years ago.

Any line that contain an invalid label will be ignored by the command processor and you may use practically any special character to generate an invalid label. For example:

@echo off  :~ This is a comment :` This is a comment :! This is a comment :@ This is a comment :# This is a comment :$ This is a comment :% This is a comment :^ This is a comment :& This is a comment :* This is a comment :( This is a comment :) This is a comment :_ This is a comment :- This is a comment :+ This is a comment := This is a comment :{ This is a comment :} This is a comment :[ This is a comment :] This is a comment :| This is a comment :\ This is a comment :: This is a comment :; This is a comment :" This is a comment :' This is a comment :< This is a comment :> This is a comment :, This is a comment :. This is a comment :? This is a comment :/ This is a comment  echo OK 

In other words: if you want to insert a comment and you want not to use REM command (although I can't think of any reason to do so), you have 32 possible character combinations to do so. Why you should use precisely this one: ::? Just because some old programs written 35 years ago did it?

like image 32
Aacini Avatar answered Oct 10 '22 07:10

Aacini