elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  duda comandos batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda comandos batch  (Leído 1,972 veces)
7emiliosk8

Desconectado Desconectado

Mensajes: 73


Ver Perfil
duda comandos batch
« en: 1 Marzo 2017, 01:26 am »

hola tengo el siguiente codigo y tengo una duda en estas linas
agradeceria si alguien me pudiera explicar brevemente que estan haciendo, saludos


Código
  1. setlocal enabledelayedexpansion

Código
  1. set cadena1=%1

Código
  1. if "!cadena:~%contador%,1!" neq "" set /a "contador+=1" & call :CreaLetra !cadena:~%contador%,1! & goto ciclo

Código
  1. set palabra1=
se supone que set es para declarar una varaible, pero ahi a palabra1 no se le asigna nada

Código
  1. set palabra1=%palabra1% ^ ######  



Código
  1.  
  2. @echo off
  3. rem Realizado por morenochico
  4. rem distribuido bajo la licencia creative commons con los atributos Attribution y rem NonCommercial
  5.  
  6. setlocal enabledelayedexpansion
  7. set "contador=0"
  8. set cadena1=%1
  9. set cadena=%cadena1:~0,7%
  10.  
  11. rem esto es para ver las palabras en chico echo %cadena%
  12.  
  13. set enviado=
  14. set palabra1=
  15. set palabra2=
  16. set palabra3=
  17. set palabra4=
  18. set palabra5=
  19. set palabra6=
  20. set enviado=
  21.  
  22. :ciclo
  23. if "!cadena:~%contador%,1!" neq "" set /a "contador+=1" & call :CreaLetra !cadena:~%contador%,1! & goto ciclo
  24. goto imprime
  25. goto:eof
  26.  
  27. :CreaLetra
  28. if "%1" == "a" call :Letra_a
  29. if "%1" == "b" call :Letra_b
  30. if "%1" == "c" call :Letra_c
  31. if "%1" == "d" call :Letra_d
  32. if "%1" == "e" call :Letra_e
  33. if "%1" == "f" call :Letra_f
  34. if "%1" == "g" call :Letra_g
  35. if "%1" == "h" call :Letra_h
  36. if "%1" == "i" call :Letra_i
  37. if "%1" == "j" call :Letra_j
  38. if "%1" == "k" call :Letra_k
  39. if "%1" == "l" call :Letra_l
  40. if "%1" == "m" call :Letra_m
  41. if "%1" == "n" call :Letra_n
  42. if "%1" == "o" call :Letra_o
  43. if "%1" == "p" call :Letra_p
  44. if "%1" == "q" call :Letra_q
  45. if "%1" == "r" call :Letra_r
  46. if "%1" == "s" call :Letra_s
  47. if "%1" == "t" call :Letra_t
  48. if "%1" == "u" call :Letra_u
  49. if "%1" == "v" call :Letra_v
  50. if "%1" == "w" call :Letra_w
  51. if "%1" == "x" call :Letra_x
  52. if "%1" == "y" call :Letra_y
  53. if "%1" == "z" call :Letra_z
  54. if "%1" == "" call :espacio
  55. goto:EOF
  56. :Letra_a  
  57. set palabra1=%palabra1% ^   ##    
  58. set palabra2=%palabra2% ^  #  #  
  59. set palabra3=%palabra3% ^ #    #  
  60. set palabra4=%palabra4% ^ ######  
  61. set palabra5=%palabra5% ^ #    #  
  62. set palabra6=%palabra6% ^ #    #  
  63. goto:EOF  
  64. :Letra_b  
  65. set palabra1=%palabra1% ^ #####  
  66. set palabra2=%palabra2% ^ #    #  
  67. set palabra3=%palabra3% ^ #####  
  68. set palabra4=%palabra4% ^ #    #  
  69. set palabra5=%palabra5% ^ #    #  
  70. set palabra6=%palabra6% ^ #####  
  71. goto:EOF  
  72. :Letra_c
  73. set palabra1=%palabra1% ^ #####  
  74. set palabra2=%palabra2% ^ #      
  75. set palabra3=%palabra3% ^ #      
  76. set palabra4=%palabra4% ^ #      
  77. set palabra5=%palabra5% ^ #      
  78. set palabra6=%palabra6% ^ #####  
  79. goto:EOF  
  80. :Letra_d  
  81. set palabra1=%palabra1% ^ #####  
  82. set palabra2=%palabra2% ^ #    #  
  83. set palabra3=%palabra3% ^ #    #  
  84. set palabra4=%palabra4% ^ #    #  
  85. set palabra5=%palabra5% ^ #    #  
  86. set palabra6=%palabra6% ^ #####  
  87. goto:EOF  
  88. :Letra_e  
  89. set palabra1=%palabra1% ^ ######  
  90. set palabra2=%palabra2% ^ #      
  91. set palabra3=%palabra3% ^ #####  
  92. set palabra4=%palabra4% ^ #      
  93. set palabra5=%palabra5% ^ #      
  94. set palabra6=%palabra6% ^ ######  
  95. goto:EOF  
  96. :Letra_f  
  97. set palabra1=%palabra1% ^ ######  
  98. set palabra2=%palabra2% ^ #      
  99. set palabra3=%palabra3% ^ #####  
  100. set palabra4=%palabra4% ^ #      
  101. set palabra5=%palabra5% ^ #      
  102. set palabra6=%palabra6% ^ #      
  103. goto:EOF  
  104. :Letra_g  
  105. set palabra1=%palabra1% ^ ####    
  106. set palabra2=%palabra2% ^ #    #  
  107. set palabra3=%palabra3% ^ #      
  108. set palabra4=%palabra4% ^ #  ###  
  109. set palabra5=%palabra5% ^ #    #  
  110. set palabra6=%palabra6% ^ ####    
  111. goto:EOF  
  112. :Letra_h  
  113. set palabra1=%palabra1% ^ #    #  
  114. set palabra2=%palabra2% ^ #    #  
  115. set palabra3=%palabra3% ^ ######  
  116. set palabra4=%palabra4% ^ #    #  
  117. set palabra5=%palabra5% ^ #    #  
  118. set palabra6=%palabra6% ^ #    #  
  119. goto:EOF  
  120. :Letra_i  
  121. set palabra1=%palabra1% ^   #    
  122. set palabra2=%palabra2% ^   #    
  123. set palabra3=%palabra3% ^   #    
  124. set palabra4=%palabra4% ^   #    
  125. set palabra5=%palabra5% ^   #    
  126. set palabra6=%palabra6% ^   #    
  127. goto:EOF  
  128. :Letra_j  
  129. set palabra1=%palabra1% ^      #  
  130. set palabra2=%palabra2% ^      #  
  131. set palabra3=%palabra3% ^      #  
  132. set palabra4=%palabra4% ^      #  
  133. set palabra5=%palabra5% ^ #    #  
  134. set palabra6=%palabra6% ^ ####    
  135. goto:EOF  
  136. :Letra_k  
  137. set palabra1=%palabra1% ^ #    #  
  138. set palabra2=%palabra2% ^ #   #  
  139. set palabra3=%palabra3% ^ ####    
  140. set palabra4=%palabra4% ^ #  #    
  141. set palabra5=%palabra5% ^ #   #  
  142. set palabra6=%palabra6% ^ #    #  
  143. goto:EOF  
  144. :Letra_l  
  145. set palabra1=%palabra1% ^ #      
  146. set palabra2=%palabra2% ^ #      
  147. set palabra3=%palabra3% ^ #      
  148. set palabra4=%palabra4% ^ #      
  149. set palabra5=%palabra5% ^ #      
  150. set palabra6=%palabra6% ^ ######  
  151. goto:EOF  
  152. :Letra_m  
  153. set palabra1=%palabra1% ^ #    #  
  154. set palabra2=%palabra2% ^ ##  ##  
  155. set palabra3=%palabra3% ^ # ## #  
  156. set palabra4=%palabra4% ^ #    #  
  157. set palabra5=%palabra5% ^ #    #  
  158. set palabra6=%palabra6% ^ #    #  
  159. goto:EOF  
  160. :Letra_n  
  161. set palabra1=%palabra1% ^ #    #  
  162. set palabra2=%palabra2% ^ ##   #  
  163. set palabra3=%palabra3% ^ # #  #  
  164. set palabra4=%palabra4% ^ #  # #  
  165. set palabra5=%palabra5% ^ #   ##  
  166. set palabra6=%palabra6% ^ #    #  
  167. goto:EOF  
  168. :Letra_o  
  169. set palabra1=%palabra1% ^  ####  
  170. set palabra2=%palabra2% ^ #    #  
  171. set palabra3=%palabra3% ^ #    #  
  172. set palabra4=%palabra4% ^ #    #  
  173. set palabra5=%palabra5% ^ #    #  
  174. set palabra6=%palabra6% ^  ####  
  175. goto:EOF  
  176. :Letra_p  
  177. set palabra1=%palabra1% ^ #####  
  178. set palabra2=%palabra2% ^ #    #  
  179. set palabra3=%palabra3% ^ #    #  
  180. set palabra4=%palabra4% ^ #####  
  181. set palabra5=%palabra5% ^ #      
  182. set palabra6=%palabra6% ^ #      
  183. goto:EOF  
  184. :Letra_q  
  185. set palabra1=%palabra1% ^  ####  
  186. set palabra2=%palabra2% ^ #    #  
  187. set palabra3=%palabra3% ^ #    #  
  188. set palabra4=%palabra4% ^ #  # #  
  189. set palabra5=%palabra5% ^ #   #  
  190. set palabra6=%palabra6% ^  ### #  
  191. goto:EOF  
  192. :Letra_r  
  193. set palabra1=%palabra1% ^ #####  
  194. set palabra2=%palabra2% ^ #    #  
  195. set palabra3=%palabra3% ^ #    #  
  196. set palabra4=%palabra4% ^ #####  
  197. set palabra5=%palabra5% ^ #   #  
  198. set palabra6=%palabra6% ^ #    #  
  199. goto:EOF  
  200. :Letra_s  
  201. set palabra1=%palabra1% ^  ####  
  202. set palabra2=%palabra2% ^ #      
  203. set palabra3=%palabra3% ^  ####  
  204. set palabra4=%palabra4% ^      #  
  205. set palabra5=%palabra5% ^ #    #  
  206. set palabra6=%palabra6% ^  ####  
  207. goto:EOF  
  208. :Letra_t  
  209. set palabra1=%palabra1% ^ #####  
  210. set palabra2=%palabra2% ^   #    
  211. set palabra3=%palabra3% ^   #    
  212. set palabra4=%palabra4% ^   #    
  213. set palabra5=%palabra5% ^   #    
  214. set palabra6=%palabra6% ^   #    
  215. goto:EOF  
  216. :Letra_u  
  217. set palabra1=%palabra1% ^ #    #  
  218. set palabra2=%palabra2% ^ #    #  
  219. set palabra3=%palabra3% ^ #    #  
  220. set palabra4=%palabra4% ^ #    #  
  221. set palabra5=%palabra5% ^ #    #  
  222. set palabra6=%palabra6% ^  ####  
  223. goto:EOF  
  224. :Letra_v  
  225. set palabra1=%palabra1% ^ #    #  
  226. set palabra2=%palabra2% ^ #    #  
  227. set palabra3=%palabra3% ^ #    #  
  228. set palabra4=%palabra4% ^ #    #  
  229. set palabra5=%palabra5% ^  #  #  
  230. set palabra6=%palabra6% ^   ##    
  231. goto:EOF  
  232. :Letra_w  
  233. set palabra1=%palabra1% ^ #    #  
  234. set palabra2=%palabra2% ^ #    #  
  235. set palabra3=%palabra3% ^ #    #  
  236. set palabra4=%palabra4% ^ # ## #  
  237. set palabra5=%palabra5% ^ ##  ##  
  238. set palabra6=%palabra6% ^ #    #  
  239. goto:EOF  
  240. :Letra_x  
  241. set palabra1=%palabra1% ^ #    #  
  242. set palabra2=%palabra2% ^  #  #  
  243. set palabra3=%palabra3% ^   ##    
  244. set palabra4=%palabra4% ^   ##    
  245. set palabra5=%palabra5% ^  #  #  
  246. set palabra6=%palabra6% ^ #    #  
  247. goto:EOF  
  248. :Letra_y  
  249. set palabra1=%palabra1% ^ #   #  
  250. set palabra2=%palabra2% ^  # #    
  251. set palabra3=%palabra3% ^   #    
  252. set palabra4=%palabra4% ^   #    
  253. set palabra5=%palabra5% ^   #    
  254. set palabra6=%palabra6% ^   #    
  255. goto:EOF  
  256. :Letra_z  
  257. set palabra1=%palabra1% ^ ######  
  258. set palabra2=%palabra2% ^     #  
  259. set palabra3=%palabra3% ^    #    
  260. set palabra4=%palabra4% ^   #    
  261. set palabra5=%palabra5% ^  #      
  262. set palabra6=%palabra6% ^ ######  
  263. goto:EOF  
  264.  
  265. :espacio
  266. set palabra1=%palabra1% ^    
  267. set palabra2=%palabra2% ^    
  268. set palabra3=%palabra3% ^    
  269. set palabra4=%palabra4% ^    
  270. set palabra5=%palabra5% ^    
  271. set palabra6=%palabra6% ^    
  272. goto:EOF
  273. :imprime
  274. color 02
  275. echo %palabra1%
  276. echo %palabra2%
  277. echo %palabra3%
  278. echo %palabra4%
  279. echo %palabra5%
  280. echo %palabra6%
  281. echo.
  282. goto:EOF
  283.  


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: duda comandos batch
« Respuesta #1 en: 1 Marzo 2017, 03:47 am »

Citar
Código:
setlocal enabledelayedexpansion

Sirve para habilitar la expansión de variables en tiempo de ejecución.




Citar
Código:
set cadena1=%1

A la variable "cadena1" se le asigna como valor el argumento nº1 que se le haya enviado al script por linea de comandos.

Ejemplo:
Código:
Start /B "" "Script.cmd" "Argumento 1" "Argumento 2"




Citar
Código:
if "!cadena:~%contador%,1!" neq "" set /a "contador+=1" & call :CreaLetra !cadena:~%contador%,1! & goto ciclo

La sintaxis de esa condicional es penosa, no la tomes como un buen ejemplo a seguir. Debes asegurarte de utilizar los símbolos de apertura y de cierre de grupos de comandos ( ).


Código
  1. If "!cadena:~%contador%,1!" NEQ "" (
  2. set /a "contador+=1"
  3. call :CreaLetra !cadena:~%contador%,1!
  4. goto ciclo
  5. )

Si tu le pasas el argumento "vaca" al script, la variable "%contador%" se usa para realizar un substring en la cadena de texto "vaca" con el que iterar cada caracterer por individual {"v", "a", "c", "a"} y seguidamente llama a la subrutina "CreaLetra" para construir la letra ASCII del caracter correspondiente.



Citar
Código:
set palabra1=
se supone que set es para declarar una varaible, pero ahi a palabra1 no se le asigna nada

En ciertos lenguajes de programación, el programador puede decidir si desea declarar en la "cabecera" del código todas las variables que se vayan a usar en su código, de esta manera estará siguiendo una guía de diseño para denotar la existencia de esas variables, y eso hará que el código sea más comprensible a la hora de analizarlo. La asignación vacía de variables en Batch se suele utilizar para el mismo fin. No se si me he explicado del todo bien. En otras palabras: simplemente es una forma de organizar el código.

También sirve para eliminar un valor que se haya asignado previamente a esa variable, pero este no es el caso.



Citar
Código:
set palabra1=%palabra1% ^ ######

Las palabras se forman mediante 6 variables (%palabra1% a %palabra6%) cada una de ellas corresponden a los caracteres que se mostrarán en cada linea por invididual para construir el código ASCII. La variable "palabra1" contiene el código ASCII de la primera linea de los caracteres que se hallan procesado.

Si por ejemplo le pasas el argumento "ba" al script, esto sería el valor de la variable %palabra1% en la primera asignación de la letra "A":

Código:
:Letra_a  
set palabra1=  #####    ^   ##

Y con respecto al operador "^" pues sencillamente es algo innecesario para el funcionamiento del algoritmo, no realiza ninguna función en ese código, literálmente no hace nada... ya que no está escapando ningún caracter. Quizás lo ha puesto ahí simplemente para denotar el inicio de cada conjunto de caracteres de almohadillas (#), por que queda "bonito" y ya.

¡Saludos!


« Última modificación: 1 Marzo 2017, 03:50 am por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(ayuda) comandos batch en vb6!
Programación Visual Basic
guidosl 2 4,537 Último mensaje 12 Marzo 2009, 15:35 pm
por ~~
Ayuda con los comandos batch
Scripting
DA KILLER 5 4,104 Último mensaje 8 Abril 2010, 16:36 pm
por winroot
[BATCH] ¿Crear comandos?
Scripting
Meine programmen 2 3,224 Último mensaje 11 Junio 2012, 04:03 am
por Eleкtro
Añadir comandos no existentes en Batch (MS-DOS)
Programación General
Bulone 4 2,951 Último mensaje 4 Marzo 2013, 21:57 pm
por Eleкtro
Comandos Batch en Java « 1 2 »
Java
Baal_30 11 6,321 Último mensaje 4 Junio 2015, 22:18 pm
por Coke951
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines