web-dev-qa-db-fra.com

Que signifie :: (deux points) dans les fichiers batch DOS?

J'ai trouvé ce programme http://baiyunmanor.com/blog/work/get-current-date-time-in-dos-batch-file/

Mais je ne sais pas ce que fait la ligne

:: datetime.bat

à la fin signifie?

45
user310291

:: est une étiquette (également, inexactement, connue dans la nature par étiquette de commentaire ) peut être, en pratique, considérée comme un commentaire tout comme REM est, car il s'agit d'une étiquette "non accessible".

Il y a quelques différences entre REM et ::, bien que. Les principaux sont:

  • Avec ECHO ON une ligne REM est affichée mais pas une ligne commentée avec ::
  • UNE :: peut exécuter un signe de fin de ligne (c'est-à-dire un ^ à la fin d'une ligne commençant par :: fait la ligne suivante aussi un commentaire):

    :: This is a comment^
    echo but watch out because this line is a comment too
    
  • Étiquettes et :: ont une logique spéciale et peuvent causer des problèmes dans les blocs entre parenthèses - faites attention lorsque vous les utilisez à l'intérieur (). Exemple:

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

    Les sorties:

    Before ...
    The system cannot find the drive specified.
    After...
    
56
acdcjunior

Une ligne commençant par deux points représente un étiquette non valide qui est ignoré par le processeur de commandes, donc peut être utilisé pour insérer un commentaire. Pour des raisons qui ne peuvent être retracées, de nombreuses personnes utilisent :: pour insérer des commentaires dans les fichiers batch, mais vous devez être conscient qu'il existe plusieurs pièges dans son utilisation qui sont décrits dans le lien donné dans la réponse de Koterpillar. Il semble que la première utilisation de :: au lieu de REM command avait pour but d'accélérer l'exécution des fichiers Batch sur les machines lentes (ie: disquettes), mais cette raison n'est pas une justification valable pour l'utilisation de deux points depuis de nombreuses années depuis.

Toute ligne contenant une étiquette non valide sera ignorée par le processeur de commandes et vous pouvez utiliser pratiquement n'importe quel caractère spécial pour générer une étiquette non valide. Par exemple:

@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

En d'autres termes: si vous souhaitez insérer un commentaire et que vous ne souhaitez pas utiliser la commande REM (bien que je ne trouve aucune raison de le faire), vous avez 32 combinaisons de caractères possibles pour le faire. Pourquoi utiliser précisément celui-ci: ::? Tout simplement parce que certains anciens programmes écrits il y a 35 ans l'ont fait?

55
Aacini

Une ligne commençant par deux points est une étiquette à laquelle vous pouvez accéder avec goto:

goto end
:end

Une ligne commençant par un double-point est une étiquette, sauf que vous ne pouvez pas, même accidentellement, y accéder:

goto :end REM this doesn't work
::end

Ainsi, les deux points sont utilisés pour commenter les lignes.

Source: http://www.robvanderwoude.com/comments.php

16
Koterpillar

Comme mentionné par acdcjunior Étiquettes et :: a une logique spéciale et peut provoquer des problèmes dans les blocs de parenthèses

Voici quelques exemples

Échantillon 1

IF 1==1 (
  ::
)

Sortie de l'échantillon 1

) was unexpected at this time.

Échantillon 2

IF 1==1 (
  ::
  ::
)

Sortie de l'échantillon 2

The system cannot find the drive specified.
7
Vsevolod Parfenov

Le deux-points (:) est un marqueur d'étiquette et peut être utilisé pour obtenir des instructions.

Certaines personnes l'utilisent: en tant que commentaire, un double-point est simplement une instruction stylistique REM

2
Preet Sangha