SET /A "Word_Length=%%~z# - 5")
Tutorial extendido de aprendizaje Batch by Elektro H@cker
6.1 Variables especiales (o Variables de parámetro) (o Variables de argumentos)Expansión de variables especiales (o Argumentos) y de variables de FOR
%~z0 - expande %0 a tamaño del archivo
1 caracter escrito equivale a 1 byte de tamaño, así que con ese método sacamos el tamaño del archivo (que es lo mismo que sacar la longituid del string porque se cuentan de 1 en 1), le descuento 5 (-5) por los bytes de las comillas y los espacios.
Call Set "Compare_A=%%WORD:~0,%Word_Middle%%%"
Call Set "Compare_B=%%WORD:~-%Word_Middle%%%"
No.
Substring: Extraer parte de una variable.http://ss64.com/nt/syntax-substring.htmlSi la palabra es "atoyota", almaceno en la primera variable "ato" y en la segunda "ota", y lo mismo si en lugar de palabras usases números...
FOR /L %%X in (1,1,%Word_Middle%) DO (Call Set "Compare_B_REVERSED=%%Compare_B_REVERSED%%%%Compare_B:~-%%X,1%%")
De esta linea llego a entender, que como en el caso de un palindromo el contenido de la variable es texto se pone For/L, en el caso del capicua se pondria For (sin /L, verdad?)
Tampoco.
Lée el comentario de esa línea, ese FOR lo uso para hacer un Reverse-String de la variable "Compare_B", es necesario tanto para strings alfabéticos, numéricos, o alfanuméricos.
Variable normal:
Variable al revés:
Call Set "Compare_B_REVERSED=%%Compare_B_REVERSED%%%%Compare_B:~-%%X,1%%")
Tutorial extendido de aprendizaje Batch by Elektro H@cker
4.8 Otros operadores %
Este operador sirve para identificar y usar las variables standard, las variables de FOR, y las variables especiales (Variables de argumento).
NOTA: Como norma general, directamente en la consola el caracter % solo se usa una vez (Incluso al escribir un FOR), pero en un script hay que duplicar el número de veces que se repite este caracter para poder identificarlo %%, y el número de veces que hay que repetir el caracter aumenta según la recursividad del código.
Para strings numéricos es más sensato que uses la expansión retardada:
Tutorial extendido de aprendizaje Batch by Elektro H@cker
6.3 Variables expandidas
Resumen del código entero:
Introducimos la palabra "atoyota"
El código separa el string así: ato-y-ota
en la variable "Compare_A" se almacena "ato"
en la variable "Compare_B" se almacena "ota"
a la variable "Compare_B" se le da la vuelta quedando así: "ato"
se compara si la variable "A" y la "B" son iguales (ato = ato) y entonces es palíndromo.
Lo mismo con los números:
introduces "123321"
El código separa el string así: 123-321
en la variable "Compare_A" se almacena "123"
en la variable "Compare_B" se almacena "321"
a la variable "Compare_B" se le da la vuelta quedando así: "123"
se compara si la variable "A" y la "B" son iguales, ¿123 = 123? si, pues es capicúa.
Saludos.