batch-file - por - como crear un archivo bat
¿Qué significa::(dos puntos) en los archivos por lotes de DOS? (5)
Como se menciona en Labels y ::
tienen una lógica especial y pueden causar problemas en los paréntesis
Aquí hay un par de muestras
Muestra 1
IF 1==1 (
::
)
Salida de la muestra 1
) was unexpected at this time.
Muestra 2
IF 1==1 (
::
::
)
Salida de la muestra 2
The system cannot find the drive specified.
Encontré este programa http://baiyunmanor.com/blog/work/get-current-date-time-in-dos-batch-file/
Pero no sé lo que hace la línea
:: datetime.bat
al final significa?
El dos puntos (:) es un marcador de etiqueta y se puede usar para obtener instrucciones.
Algunas personas usan: como un comentario también, por lo que un doble colon es simplemente una declaración REM estilística
Una línea que comienza con dos puntos es una etiqueta a la que puedes goto
con goto
:
goto end
:end
Una línea que comienza con dos puntos dobles es una etiqueta, excepto que no puede, ni siquiera accidentalmente, saltar a ella:
goto :end REM this doesn''t work
::end
Por lo tanto, dos puntos se usa para comentar líneas.
Una línea que comienza en dos puntos dobles representa una etiqueta no válida que el procesador de comandos ignora, por lo que se puede utilizar para insertar un comentario. Por razones que no se pueden rastrear, muchas personas usan ::
para insertar comentarios en los archivos por lotes, pero debe tener en cuenta que hay varias dificultades en su uso que se describen en el enlace dado en la respuesta de Koterpillar. Parece que el primer uso del comando ::
vez de REM
fue con el propósito de acelerar la ejecución de los archivos por lotes en máquinas lentas (es decir, disquetes), pero esa razón no es una justificación válida para el uso de dos puntos dobles desde Hace muchos años.
Cualquier línea que contenga una etiqueta no válida será ignorada por el procesador de comandos y usted puede usar prácticamente cualquier carácter especial para generar una etiqueta no válida. Por ejemplo:
@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 otras palabras: si quiere insertar un comentario y quiere no usar REM
comando REM
(aunque no puedo pensar en ninguna razón para hacerlo), tiene 32 posibles combinaciones de caracteres para hacerlo. ¿Por qué deberías usar precisamente este: ::
? ¿Solo porque algunos viejos programas escritos hace 35 años lo hicieron?
::
(también llamada etiqueta de comentario ) es un comentario igual que REM
.
Hay algunas diferencias entre ellos. Los principales son:
- Con
ECHO ON
se muestra una líneaREM
pero no una línea comentada con::
- A
::
puede ejecutar un cursor de final de línea (es decir, un^
al final de una línea que comienza con::
hace que la siguiente línea también sea un comentario). - Las etiquetas y
::
tienen una lógica especial y pueden causar problemas en los bloques de paréntesis: tenga cuidado al usarlos dentro(
)
.