当前位置: 首页 > 知识库问答 >
问题:

在DOS批处理文件中::(双冒号)是什么意思?

徐兴昌
2023-03-14

我发现这个程序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

但我不知道这句台词

:: datetime.bat

到底是什么意思?

共有3个答案

甘明朗
2023-03-14

以冒号开头的行是一个标签,您可以使用goto跳转到它:

goto end
:end

以双冒号开头的行是一个标签,除非你不能,即使是偶然,跳到它:

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

因此,双冒号用于注释行。

资料来源:http://www.robvanderwoude.com/comments.php

凌宏大
2023-03-14

以双冒号开头的行表示无效标签,命令处理器会忽略该标签,因此可以使用该行插入注释。出于无法追踪的原因,许多人使用在批处理文件中插入注释,但您必须知道,在使用过程中有几个陷阱,在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年前写的一些老程序做到了?

温星华
2023-03-14

::是一个标签(不准确地称为注释标签),在实践中,可以像REM一样被视为注释,因为它是一个“无法转到”的标签。

然而,REM之间有一些区别。主要有:

>

  • ECHO打开时,会显示REM行,但没有注释

    ::可以执行行尾插入符号(即,在以::开头的行尾执行^,使下一行也成为注释):

     :: 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...
    

  •  类似资料:
    • 问题内容: CSS 中的双冒号()是什么意思? 例如: 问题答案: 这意味着 伪元素 选择器。这意味着右边的 元素 在普通DOM中不存在,但是可以选择。 伪元素由两个冒号(::)组成,后跟伪元素的名称。 它最初只有一个冒号,而是改为从区分其 伪类 (如,,等)。最好使用for 和伪元素,因为单个冒号具有更好的浏览器支持,即在较早的IE版本中。

    • 我正在学习基本的PHP,试图阅读JOOMLA核心文件并对其有一些基本的了解,但我遇到了很多运算符,如“:”等,我不懂。 我在谷歌做了一些研究,有很多关于双冒号(::)的解释,但在“::”上几乎什么都没有,包含这个操作符的文件之一是joomla site root/mod_login/tmpl/default。php,行是 那么这意味着什么呢?是“JRoute::(('index.php',true

    • 问题内容: 操作数是什么意思,更具体地说是Python? 有人可以解释如何阅读此代码段吗? 问题答案: 更新的答案 在问题的上下文中,我们正在处理伪代码,但是从Python 3.8开始 ,它实际上是一个有效的运算符,它允许在表达式中分配变量: 有关更多详细信息,请参见PEP 572。 原始答案 您发现的是 伪代码 伪代码 是计算机程序或其他算法的工作原理的非正式高级描述。 实际上是赋值运算符。在P

    • 本文向大家介绍双问号(??)运算符在PHP中是什么意思?,包括了双问号(??)运算符在PHP中是什么意思?的使用技巧和注意事项,需要的朋友参考一下 PHP 7添加了新的运算符双问号(??)运算符。在PHP 7中,双问号(??)运算符称为Null合并运算符。 如果它存在且不为NULL,则返回其第一个操作数;否则返回第一个操作数。否则,返回其第二个操作数。从左到右评估。Null合并运算符也可以链形式使

    • 问题内容: 问号和冒号是什么意思? 谢谢 问题答案: 这是PHP 三元运算符(也称为条件运算符)-如果第一个操作数的值为true,则计算为第二个操作数,否则为第三个操作数。 将其视为可以在表达式中使用的“ if”语句。在根据某些条件进行简洁的分配时可能非常有用,例如 还有一个简写版本(从PHP 5.3开始)。您可以省略中间操作数。如果为真,则运算符将作为第一个操作数,否则为第三个操作数。例如: 值

    • 我正在学习spring.io教程。有一个函数是这样的: