Подтвердить что ты не робот

Что означает:: (двойной двоеточие) в пакетных файлах DOS?

Я нашел эту программу http://baiyunmanor.com/blog/work/get-current-date-time-in-dos-batch-file/

Но я не знаю, что делает линия

:: datetime.bat

в конце означает?

4b9b3361

Ответ 1

Метка :: is (также неточно известная в дикой природе по метке комментария) на практике может считаться комментарием так же, как и REM, так как это метка, которую нельзя использовать.

Между REM и :: есть некоторые различия. Основными из них являются:

  • С ECHO ON отображается строка REM но не строка с комментариями ::
  • A :: может выполнить символ конца строки (то есть, ^ в конце строки, начинающейся с :: делает следующую строку также комментарием):

    :: This is a comment^
    echo but watch out because this line is a comment too
    
  • Метки и :: имеют особую логику и могут вызывать проблемы в скобках - будьте осторожны при использовании их внутри ( ). Пример:

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

    Выходы:

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

Ответ 2

Строка, начинающаяся в двойном двоеточии, представляет собой недопустимую метку, которая игнорируется командным процессором, поэтому ее можно использовать для вставки комментария. По причинам, которые нельзя проследить, многие люди используют :: для вставки комментариев в пакетные файлы, но вы должны знать, что в его использовании есть несколько ошибок, описанных в ссылке, приведенной в ответе Koterpillar. Похоже, что первое использование команды :: вместо REM заключалось в том, чтобы ускорить выполнение пакетных файлов на медленных машинах (то есть: дискеты), но эта причина не является обоснованным основанием для использования двойной толстой кишки, много лет назад.

Любая строка, содержащая недопустимую метку, будет проигнорирована командным процессором, и вы можете использовать практически любой специальный символ для создания недопустимой метки. Например:

@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

Другими словами: если вы хотите вставить комментарий, и вы не хотите использовать команду REM (хотя я не могу придумать никаких причин для этого), у вас есть 32 возможных комбинаций символов для этого. Почему вы должны использовать именно этот: ::? Просто потому, что некоторые старые программы, написанные 35 лет назад, сделали это?

Ответ 3

Строка, начинающаяся с двоеточия, является меткой, с которой вы можете перейти с помощью goto:

goto end
:end

Строка, начинающаяся с двойного двоеточия, является меткой, за исключением того, что вы не можете даже случайно перейти к ней:

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

Таким образом, для комментариев строк используется двойной двоеточие.

Источник: http://www.robvanderwoude.com/comments.php

Ответ 4

Как упоминалось acdcjunior Этикетки и :: имеют специальную логику и могут вызвать проблемы в скобках

Вот несколько примеров

Пример 1

IF 1==1 (
  ::
)

Выход образца 1

) was unexpected at this time.

Образец 2

IF 1==1 (
  ::
  ::
)

Выход образца 2

The system cannot find the drive specified.

Ответ 5

Двоеточие (:) является маркером метки и может использоваться для получения инструкций.

Некоторые люди используют: как комментарий, так что двойной двоеточие - это просто стилистическая инструкция REM