Я нашел эту программу http://baiyunmanor.com/blog/work/get-current-date-time-in-dos-batch-file/
Но я не знаю, что делает линия
:: datetime.bat
в конце означает?
Я нашел эту программу http://baiyunmanor.com/blog/work/get-current-date-time-in-dos-batch-file/
Но я не знаю, что делает линия
:: datetime.bat
в конце означает?
Метка ::
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...
Строка, начинающаяся в двойном двоеточии, представляет собой недопустимую метку, которая игнорируется командным процессором, поэтому ее можно использовать для вставки комментария. По причинам, которые нельзя проследить, многие люди используют ::
для вставки комментариев в пакетные файлы, но вы должны знать, что в его использовании есть несколько ошибок, описанных в ссылке, приведенной в ответе 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 лет назад, сделали это?
Строка, начинающаяся с двоеточия, является меткой, с которой вы можете перейти с помощью goto
:
goto end
:end
Строка, начинающаяся с двойного двоеточия, является меткой, за исключением того, что вы не можете даже случайно перейти к ней:
goto :end REM this doesn't work
::end
Таким образом, для комментариев строк используется двойной двоеточие.
Как упоминалось acdcjunior Этикетки и ::
имеют специальную логику и могут вызвать проблемы в скобках
Вот несколько примеров
Пример 1
IF 1==1 (
::
)
Выход образца 1
) was unexpected at this time.
Образец 2
IF 1==1 (
::
::
)
Выход образца 2
The system cannot find the drive specified.
Двоеточие (:) является маркером метки и может использоваться для получения инструкций.
Некоторые люди используют: как комментарий, так что двойной двоеточие - это просто стилистическая инструкция REM