2011-09-30 20 views
5

Me preguntaba sobre la longitud máxima de una etiqueta en un archivo por lotes.Lote: longitud de la etiqueta

He encontrado this Microsoft article indicando:

MS-DOS reconoce sólo los primeros ocho caracteres de una etiqueta de archivo por lotes; los personajes subsiguientes son ignorados.

También proporcionan un ejemplo:

@echo off 
goto latestch 
:latestchanges 
echo two 
:latestch 
echo three 

que se supone que la producción

two 
three 

en lugar de

three 

Pero en mi sistema, me sale

three 

Probé con Windows 7 (6.1.7600) y Windows XP (5.1.2600), y obtuve el mismo resultado en ambos.

¡Me parece que no hay ocho caracteres de limitación! ¿Me estoy perdiendo algo?

+0

Sé que ha sido respondida, pero la causa raíz de la confusión es MS-DOS versus el comando de Windows lien – PsychoData

Respuesta

10

Los límites son 2047 y 8192, en función de su sistema operativo. Ver this KB article.

+0

+1 Para encontrar los límites reales –

+0

De acuerdo con la KB, el límite no depende de 32 vs 64 bits ; 2047 caracteres para Windows NT4/2000, 8191 para Windows XP y posteriores –

+0

Asegúrese de mirar la respuesta de M M. si quiere entender el 'Por qué' – PsychoData

1

Estoy bastante seguro de que la limitación de 8 caracteres desapareció cuando Windows se alejó de la plataforma de MS-DOS después de Windows 98. Todos los sistemas operativos de Microsoft que comienzan con Windows 2000 ya no tienen la limitación. La ventana de comandos que vemos hoy en Windows 7 y en otros es una aplicación que se ejecuta en la parte superior de Windows, en lugar de la implementación anterior donde la ventana de comandos accedió a la capa de MS-DOS que se ejecuta debajo de Windows.

5

El ejemplo es verdadero para MS-DOS no cmd.exe. La versión de su cmd.exe es más alta que MS-DOS. Siéntase libre de usar cualquier longitud de etiqueta.

acuerdo con dicho artículo, esta limitación es válida para:

Microsoft MS-DOS 4.01 Standard Edition 
Microsoft MS-DOS 5.0 Standard Edition 
Microsoft MS-DOS 5.0a 
Microsoft MS-DOS 6.0 Standard Edition 
Microsoft MS-DOS 6.2 Standard Edition 
Microsoft MS-DOS 6.21 Standard Edition 
Microsoft MS-DOS 6.22 Standard Edition 
0

Los comandos de lote de Windows 7 CMD y BAT que utilizan GOTO: LABEL no están limitados a 8 caracteres que siguen al carácter ":" como notó inicialmente el cartel original cuando se ejecutan directamente o se LLAME desde otro archivo por lotes.

es decir,

@echo off 
SET VARIABLE=2 
if %VARIABLE%.==. GOTO :LABELNUMBERZERO 
if %VARIABLE%.==1. GOTO :LABELNUMBERONE 
if %VARIABLE%.==2. GOTO :LABELNUMBERTWO 
if %VARIABLE%.==3. GOTO :LABELNU 
if %VARIABLE%.==4. GOTO :LABELN 
GOTO :ENDTHISLONGTHING 
:LABELNUMBERZERO 
echo your variable was " " 
GOTO :ENDTHISLONGTHING 
:LABELNUMBERONE 
echo your variable was "1" 
GOTO :ENDTHISLONGTHING 
:LABELNUMBERTWO 
echo your variable was "2" 
:ENDTHISLONGTHING 
:LABELNU 
echo your variable was "3" 
:ENDTHISLONGTHING 
:LABELN 
echo your variable was "4" 
:ENDTHISLONGTHING 

El resultado de esto es: su variable fue "2"

Si establece la variable = 4 el resultado es: su variable fue "4"

Por lo tanto, DOS ahora ve incluso nombres similares (caracteres iniciales) como etiquetas únicas, incluso si el mismo contenido de una etiqueta más corta existe previamente en el archivo por lotes.