Crear archivo bat con otro bat
Estimados expertos de este foro, saludos.
Me gustaría saber como se puede crear un archivo bat con otro bat que muestre cierto resultado predefinido, por ejemplo:
Basado en el apoyo del experto gggiral he realizado un archivo bat que me genera letras mayúsculas de tamaño apreciable para presentación de un programa bat.
He puesto el siguiente código:
@echo off Cls Color 17 F: Echo. Echo²²²²²² Echo²² Echo²²²² Echo²² Echo²² Echo. E: Echo. Echo²²²²²² Echo²² Echo²²²² Echo²² Echo²²²²²² Echo. L: E: Echo. Echo²² Echo²² Echo²² Echo²² Echo²²²²²² Echo. I: E: Echo. Echo²² Echo²² Echo²² Echo²² Echo²² Echo. X: E: Echo. Echo²²²² Echo²²²² Echo²² Echo²²²² Echo²²²² Echo. Pause
Por lo tanto, hacer que en tiempo de ejecución pregunte que letra desea ver; si se le contesta la E entonces se crea un archivo bat con el código de la letra E y se pueda observar al ejecutarlo.
Si se le contesta la F igualmente se crea otro archivo bat que el ejecutarlo se observara la F
1 Respuesta
@echo off Cls Color 17 > letraE.bat echo @echo off >> letraE.bat echo echo °°°°°°° >> letraE.bat echo echo °° >> letraE.bat echo echo °°°° >> letraE.bat echo echo °° >> letraE.bat echo echo °°°°°°° Pause
Mira a ver si esto te vale. Como siempre es posible que el editor de la página cambie alguna cosilla. Esto generaría un letraE.bat que al ejecutarlo sacaría una letra E grandota. Lo que no veo claro es como superponerlos. No sé si estás habituado a poner las redirecciones al principio. Por si no lo estás la primera sería equivalente a "echo @echo off>letraE.bat" y así sucesivamente. Queda más legible de esta manera, creo.
Al final cogí mi diseño en vez del tuyo. Con el tuyo sería:
@echo off Cls Color 17 > letraE.bat echo @echo off >> letraE.bat echo echo²²²²²² >> letraE.bat echo echo²² >> letraE.bat echo echo²²²² >> letraE.bat echo echo²² >> letraE.bat echo echo²²²²²² Pause
Al volver a leer lo que pedías me he dado cuenta de que querías algo más. Tal vez algo así:
@echo off :Inicio Cls Color 17 set /p letra=Escribe la letra (E, F, L, I): goto :letra%letra% :LetraE > letra.bat echo @echo off >> letra.bat echo echo²²²²²² >> letra.bat echo echo²² >> letra.bat echo echo²²²² >> letra.bat echo echo²² >> letra.bat echo echo²²²²²² call letra goto :fin :LetraF > letra.bat echo @echo off >> letra.bat echo echo²²²²²² >> letra.bat echo echo²² >> letra.bat echo echo²²²² >> letra.bat echo echo²² >> letra.bat echo echo²² call letra goto :fin :LetraI > letra.bat echo @echo off >> letra.bat echo echo²² >> letra.bat echo echo²² >> letra.bat echo echo²² >> letra.bat echo echo²² >> letra.bat echo echo²² call letra goto :fin :LetraL > letra.bat echo @echo off >> letra.bat echo echo²² >> letra.bat echo echo²² >> letra.bat echo echo²² >> letra.bat echo echo²² >> letra.bat echo echo²²²²²² call letra goto :fin :fin set /p mas=¨Mas letras (S/N)? if "%mas%" == "S" goto :inicio if "%mas%" == "s" goto :inicio Pause
Si quieres guardas los bat por separado en lugar de usar siempre el mismo (letra.bat) los puedes nombrar de forma diferente.
En esta ocasión el editor ha eliminado los espacios entre el "echo" y el primer "²" y esto hace que no funcione. Restablécelos manualmente antes de ejecutarlo.
He colocado en base a lo aprendido por lo que me envías, los siguiente
>>letraE.bat echo Pause
para poder pausar le ejecución y mirar la letra, así también puedo enviar el cls, lo de los colores seria necesario poder usar otro código para seleccionar además color.
Lo que mencionas de superponerlos, no comprendo pero si existe una para generar solo la letra es lo que hace el código que me envía, si se refiere a que, si requiero generar una palabra por ejemplo FELIX, o BIENVENIDO, o más una frase corta BIENVENIDO AL EVAD en otro archivo bat, voy a tomarme otro tiempo para subir el alfabeto completo basado en tu apoyo y abro un nuevo tema para la palabra o frase.
Regresando a lo mismo, he nombrado a cada letra, solo he aumentado lo mencionado al pause: (Muestro un fragmento..)
set /p letra=Escribe la letra (E, F, L, I): goto :letra%letra% :LetraE > letraE.bat echo @echo off >> letraE.bat echo echo ²²²²²² >> letraE.bat echo echo ²² >> letraE.bat echo echo ²²²² >> letraE.bat echo echo ²² >> letraE.bat echo echo ²²²²²² >> letraE.bat echo pause call letra goto :fin :LetraF
pero cuando elijo la letra y le doy a enter me sale esto
Aunque si crea el archivo correctamente. Que podrá ser???
Gracias
Disculpa que vuelva a poner el tema con este punto ante las letras, creo conveniente que antes que cree el archivo bat, primero me muestre la letra y luego de aceptar ejecute la acción de enviar el código al crear el nuevo archivo bat.
Por si todavía no has detectado el problema que comentabas en tu mensaje de las 8 de ayer, se trata de que al BAT generado le llamas "letraE.bat" pero lo invocas (comando "call") llamándolo "letra" en vez de "letraE". Respecto a los colores el parámetro del comando color controla con el primer dígito el color de fondo y con el segundo el de primer plano. Puedes ver los códigos y el significado en:
http://www.computerhope.com/color.htm
Por último si interpreto bien tu último mensaje, que muestre primero la letra "grande", pida aceptación y luego se cree el bat si se ha aceptado, sería algo así (solo para dos letras):
@echo off :Inicio Cls Color 17 set /p letra=Escribe la letra (E, F): goto :letra%letra% :LetraE Echo²²²²²² Echo²² Echo²²²² Echo²² Echo²²²²²² set /p crear=¨Se quiere crear el bat (S/N)? if "%crear%" == "N" goto :fin if "%crear%" == "n" goto :fin > letra.bat echo @echo off >> letra.bat echo echo²²²²²² >> letra.bat echo echo²² >> letra.bat echo echo²²²² >> letra.bat echo echo²² >> letra.bat echo echo²²²²²² >> letra.bat echo pause call letra goto :fin :LetraF Echo²²²²²² Echo²² Echo²²²² Echo²² Echo²² set /p crear=¨Se quiere crear el bat (S/N)? if "%crear%" == "N" goto :fin if "%crear%" == "n" goto :fin > letra.bat echo @echo off >> letra.bat echo echo²²²²²² >> letra.bat echo echo²² >> letra.bat echo echo²²²² >> letra.bat echo echo²² >> letra.bat echo echo²² >> letra.bat echo pause call letra :fin set /p mas=¨Mas letras (S/N)? if "%mas%" == "S" goto :inicio if "%mas%" == "s" goto :inicio Pause
¡Gracias! Es lo que requería, está excelente, ya mismo termino el alfabeto y podré subir otro tema para lo de formar palabras. He encontrado el el código ^ permite unir al frente los que esta en la siguiente línea o grupo de líneas ejemplo si tengo:
Echo 78 ^
Echo 26 ^
El resultado es: echo 78 echo 26
En serie,... esto podría servir, lo menciono para ir probando
Ante el tema planteado aquí lo declaro solucionado y te agradezco mucho por ello. Hasta la próxima.
He encontrado una forma de unir las letras, un poco chapucera pero funciona. Este es el código:
@echo off Setlocal EnableDelayedExpansion Cls Color 17 set /a cont = 0 set rot2= set rot1= set rot3= set rot4= set rot5= set cE=²²²²²² ²² ²²²² ²² ²²²²²²ÿ set cF=²²²²²² ²² ²²²² ²² ²² ÿ set /p pal=Escribe la palabra (de menos de 10 letras): :cont set l=!pal:~%cont%,1! if "%l%" == "" goto :fin set /a cont += 1 set rot1=!rot1! !c%l%:~0,7! set rot2=!rot2! !c%l%:~7,7! set rot3=!rot3! !c%l%:~14,7! set rot4=!rot4! !c%l%:~21,7! set rot5=!rot5! !c%l%:~28,7! goto :cont :fin set /a ncar=cont*8 Echo ! Rot1:~0,%ncar%! Echo ! Rot2:~0,%ncar%! Echo ! Rot3:~0,%ncar%! Echo ! Rot4:~0,%ncar%! Echo ! Rot5:~0,%ncar%! Pause
Por supuesto habrá que ver lo que hace el editor de la página. Tiene de bueno que "aplana" los códigos de las letras (a las que he llamado cE, cF con la "c" de carácter por si se quieren diseñar números).
En este de prueba las "palabras" solo pueden tener las letras E y F. El carácter "ÿ" representa al ASCII 255. Es un espacio pero tiene la ventaja de que el bat no lo trata como espacio y no lo elimina la formar la variable rot5.
Pruébalo y me dices que te parece.
He pasado el código, he separado los códigos que me envías por lo del editor, así:
Nota1:
set cE= ²²²²²² ²² ²²²² ²² ²²²²²² ÿ
set cF= ²²²²²² ²² ²²²² ²² ²² ÿ
lo ejecuto pero me sale así:
¿Qué será?
Nota 1: Observa que pegando directamente, no se separa las letras del código
Nota 2: Si quiero agregar más letras al código, ¿lo hago a partir de donde? Sera de
set cF= ²²²²²² ²² ²²²² ²² ²² ÿ ???
Gracias por mantener el tema.
Corrección!!
Nota 1: Observa que pegando directamente, no se unen las letras del código.
A propósito, hay alguna forma de editar el comentario mensaje dentro de un tiempo de hacer click a ENVIAR para evitar que el mensaje lleve errores??
El problema es que el editor ha incluido un espacio entre la "!" y la "R" de cada "rot" (les he llamado así por "rótulo") además de poner en mayúsculas esa "r" y la del "echo". Y no pongas espacios entre el igual y el primer² en ninguno de los "set" de los caracteres. Y no he conseguido lo que sugieres, editar el "snippet" de manera que no lleve errores. Les pasé hace algún tiempo (exactamente el 30 de octubre) el problema a los responsables de la página y me han dicho que lo han comprobado y lo están mirando, pero no parece que lo hayan resuelto todavía. He incluido algunas letras más, aunque no estoy muy satisfecho con el diseño de las letras (no soy muy bueno en esas cosas) pero puede servir de prueba. Así es como lo tengo ahora:
@echo off Setlocal EnableDelayedExpansion Cls Color 17 set /a cont = 0 set rot2= set rot1= set rot3= set rot4= set rot5= set cA= ²²²² ²² ²² ²²²²²² ²² ²² ²² ²²ÿ set cB=²²²²² ²² ²² ²²²²²² ²² ²² ²²²²² ÿ set cC=²²²²²² ²² ²² ²² ²²²²²²ÿ set cD=²²²²² ²² ²² ²² ²² ²² ²² ²²²²² ÿ set cE=²²²²²² ²² ²²²² ²² ²²²²²²ÿ set cF=²²²²²² ²² ²²²² ²² ²² ÿ set cG=²²²²²² ²² ²² ²²² ²² ²² ²²²²²²ÿ set cH=²² ²² ²² ²² ²²²²²² ²² ²² ²² ²²ÿ set cI= ²² ²² ²² ²² ²² ÿ set cJ= ²² ²² ²² ²² ²² ²²²²ÿ set cK=²² ²² ²² ²² ²²²² ²² ²² ²² ²²ÿ set cL=²² ²² ²² ²² ²²²²²²ÿ set /p pal=Escribe la palabra (de menos de 10 letras): :cont set l=!pal:~%cont%,1! if "%l%" == "" goto :fin set /a cont += 1 set rot1=!rot1! !c%l%:~0,7! set rot2=!rot2! !c%l%:~7,7! set rot3=!rot3! !c%l%:~14,7! set rot4=!rot4! !c%l%:~21,7! set rot5=!rot5! !c%l%:~28,7! goto :cont :fin set /a ncar=cont*8 Echo ! Rot1:~0,%ncar%! Echo ! Rot2:~0,%ncar%! Echo ! Rot3:~0,%ncar%! Echo ! Rot4:~0,%ncar%! Echo ! Rot5:~0,%ncar%! Pause
No olvides eliminar el espacio que seguro que introduce entre la "!" y cada uno de los "rot" en los cinco "echo" finales.
Que genial, pero como lo has diseñado solo llega hasta la letra L, todavía no le pillo el sentido para completar el resto de letras.
cuando ejecuto solo hasta 9 letras escribe bien con 10 no bien miralo.
con 9
con 10
Con respecto a lo inicial, con el codigo que me has apoyado he completado el alfabeto, te lo pongo aquí.
@echo off :Inicio Cls Color 17 echo. set /p letra=Escribe la letra que desees ( ): goto :letra%letra% :LetraA > letraA.bat echo @echo off >> letraA.bat echo echo ²²²²² >> letraA.bat echo echo ²² ²² >> letraA.bat echo echo ²²²²²²² >> letraA.bat echo echo ²² ²² >> letraA.bat echo echo ²² ²² >> letraA.bat echo pause call letraA goto :fin :LetraB > letraB.bat echo @echo off >> letraB.bat echo echo ²²²²²²² >> letraB.bat echo echo ²² ²² >> letraB.bat echo echo ²²²²²² >> letraB.bat echo echo ²² ²² >> letraB.bat echo echo ²²²²²²² >> letraB.bat echo pause call letraB goto :fin :LetraC > letraC.bat echo @echo off >> letraC.bat echo echo ²²²²²² >> letraC.bat echo echo ²² >> letraC.bat echo echo ²² >> letraC.bat echo echo ²² >> letraC.bat echo echo ²²²²²² >> letraC.bat echo pause call letraC goto :fin :LetraD > letraD.bat echo @echo off >> letraD.bat echo echo ²²²²² >> letraD.bat echo echo ²² ²² >> letraD.bat echo echo ²² ²² >> letraD.bat echo echo ²² ²² >> letraD.bat echo echo ²²²²² >> letraD.bat echo pause call letraD goto :fin :LetraE > letraE.bat echo @echo off >> letraE.bat echo echo ²²²²² >> letraE.bat echo echo ²² >> letraE.bat echo echo ²²²² >> letraE.bat echo echo ²² >> letraE.bat echo echo ²²²²² >> letraE.bat echo pause call letraE goto :fin :LetraF echo. > letraF.bat echo @echo off >> letraF.bat echo echo ²²²²²² >> letraF.bat echo echo ²² >> letraF.bat echo echo ²²²² >> letraF.bat echo echo ²² >> letraF.bat echo echo ²² >> letraF.bat echo pause call letraF goto :fin :LetraG > letraG.bat echo @echo off >> letraG.bat echo echo ²²²²²² >> letraG.bat echo echo ²² >> letraG.bat echo echo ²² ²²² >> letraG.bat echo echo ²² ²² >> letraG.bat echo echo ²²²²²² >> letraG.bat echo pause call letraG goto :fin :LetraH > letraH.bat echo @echo off >> letraH.bat echo echo ²² ²² >> letraH.bat echo echo ²² ²² >> letraH.bat echo echo ²²²²²²² >> letraH.bat echo echo ²² ²² >> letraH.bat echo echo ²² ²² >> letraH.bat echo pause call letraH goto :fin :LetraI > letraI.bat echo @echo off >> letraI.bat echo echo ²² >> letraI.bat echo echo ²² >> letraI.bat echo echo ²² >> letraI.bat echo echo ²² >> letraI.bat echo echo ²² >> letraI.bat echo pause call letraI goto :fin :LetraJ > letraJ.bat echo @echo off >> letraJ.bat echo echo ²²²² >> letraJ.bat echo echo ²² >> letraJ.bat echo echo ²² >> letraJ.bat echo echo ²² ²² >> letraJ.bat echo echo ²²²²²² >> letraJ.bat echo pause call letraJ goto :fin :LetraK > letraK.bat echo @echo off >> letraK.bat echo echo ²² ²² >> letraK.bat echo echo ²² ²² >> letraK.bat echo echo ²²²² >> letraK.bat echo echo ²² ²² >> letraK.bat echo echo ²² ²² >> letraK.bat echo pause call letraK goto :fin :LetraL > letraL.bat echo @echo off >> letraL.bat echo echo ²² >> letraL.bat echo echo ²² >> letraL.bat echo echo ²² >> letraL.bat echo echo ²² >> letraL.bat echo echo ²²²²²² >> letraL.bat echo pause call letraL goto :fin :LetraM > letraM.bat echo @echo off >> letraM.bat echo echo ² ² >> letraM.bat echo echo ²²² ²²² >> letraM.bat echo echo ²² ² ²² >> letraM.bat echo echo ²² ²² >> letraM.bat echo echo ²² ²² >> letraM.bat echo pause call letraM goto :fin :LetraN > letraN.bat echo @echo off >> letraN.bat echo echo ²² ²² >> letraN.bat echo echo ²²² ²² >> letraN.bat echo echo ²² ² ²² >> letraN.bat echo echo ²² ²²² >> letraN.bat echo echo ²² ²² >> letraN.bat echo pause call letraN goto :fin :LetraO > letraO.bat echo @echo off >> letraO.bat echo echo ²²²²²²² >> letraO.bat echo echo ²² ²² >> letraO.bat echo echo ²² ²² >> letraO.bat echo echo ²² ²² >> letraO.bat echo echo ²²²²²²² >> letraO.bat echo pause call letraO goto :fin :LetraP > letraP.bat echo @echo off >> letraP.bat echo echo ²²²²²² >> letraP.bat echo echo ²² ²² >> letraP.bat echo echo ²²²²²² >> letraP.bat echo echo ²² >> letraP.bat echo echo ²² >> letraP.bat echo pause call letraP goto :fin :LetraQ > letraQ.bat echo @echo off >> letraQ.bat echo echo ²²²²²²² >> letraQ.bat echo echo ²² ²² >> letraQ.bat echo echo ²² ²² >> letraQ.bat echo echo ²² ² ²² >> letraQ.bat echo echo ²²²²²²² >> letraQ.bat echo echo ²² >> letraQ.bat echo pause call letraQ goto :fin :LetraR > letraR.bat echo @echo off >> letraR.bat echo echo ²²²²²² >> letraR.bat echo echo ²² ²² >> letraR.bat echo echo ²²²²²²² >> letraR.bat echo echo ²² ² >> letraR.bat echo echo ²² ² >> letraR.bat echo pause call letraR goto :fin :LetraS > letraS.bat echo @echo off >> letraS.bat echo echo ²²²²²²² >> letraS.bat echo echo ²² >> letraS.bat echo echo ²²²²²²² >> letraS.bat echo echo ²² >> letraS.bat echo echo ²²²²²²² >> letraS.bat echo pause call letraS goto :fin :LetraT > letraT.bat echo @echo off >> letraT.bat echo echo ²²²²²² >> letraT.bat echo echo ²² >> letraT.bat echo echo ²² >> letraT.bat echo echo ²² >> letraT.bat echo echo ²² >> letraT.bat echo pause call letraT goto :fin :LetraU > letraU.bat echo @echo off >> letraU.bat echo echo ²² ²² >> letraU.bat echo echo ²² ²² >> letraU.bat echo echo ²² ²² >> letraU.bat echo echo ²² ²² >> letraU.bat echo echo ²²²²² >> letraU.bat echo pause call letraU goto :fin :LetraV > letraV.bat echo @echo off >> letraV.bat echo echo ² ² >> letraV.bat echo echo ² ² >> letraV.bat echo echo ² ² >> letraV.bat echo echo ² ² >> letraV.bat echo echo ²² >> letraV.bat echo pause call letraV goto :fin :LetraW > letraW.bat echo @echo off >> letraW.bat echo echo ²² ²² >> letraW.bat echo echo ²² ²² >> letraW.bat echo echo ²² ² ²² >> letraW.bat echo echo ² ² ² ² >> letraW.bat echo echo ²² ²² >> letraW.bat echo pause call letraW goto :fin :LetraX > letraX.bat echo @echo off >> letraX.bat echo echo ²² ²² >> letraX.bat echo echo ²² ²² >> letraX.bat echo echo ²² >> letraX.bat echo echo ²² ²² >> letraX.bat echo echo ²² ²² >> letraX.bat echo pause call letraX goto :fin :LetraY > letraY.bat echo @echo off >> letraY.bat echo echo ²² ²² >> letraY.bat echo echo ²² ²² >> letraY.bat echo echo ²² >> letraY.bat echo echo ²² >> letraY.bat echo echo ²² >> letraY.bat echo pause call letraY goto :fin :LetraZ > letraZ.bat echo @echo off >> letraZ.bat echo echo ²²²²²² >> letraZ.bat echo echo ²² >> letraZ.bat echo echo ²² >> letraZ.bat echo echo ²² >> letraZ.bat echo echo ²²²²²² >> letraZ.bat echo pause call letraZ goto :fin :fin set /p mas=¨Mas letras (S/N)? if "%mas%" == "S" goto :inicio if "%mas%" == "s" goto :inicio Pause
El problema es que para que mi bat funcione según el esquema que yo he pensado, todas las letras tienen que encajar en un rectángulo determinado, en mi caso de 7 columnas (incluida la de separación del siguiente carácter) por 5 filas. Por eso hay 5 componentes del rótulo (rot1 a rot5, uno por fila) y se rellenan con las 7 componentes "columnares" del diseño de la letra. Las letras de tu diseño no se ajustan a un rectángulo fijo (creo que en la terminología de imprenta se llama "caja") y eso complica el asunto. Se puede adoptar como "caja" la más grande y meter en ella, como se decida, cada una de las letras. De hecho para la "I" he tenido que retocar el diseño básico.
Una vez situadas todas las letras en la caja que se decida se "aplana" el diseño poniéndolo en una sola línea. Por ejemplo mi E, de 7x5, sería:
²²²²²²
²²
²²²²
²²
²²²²²²
Aplanada quedaría
²²²²²²²²²²²²²²²²²²²²ÿ
Poniendo en una sola fila las cinco filas de arriba, incluido siempre el espacio de la séptima columna de separación (que en el último es un "ÿ" para evitar el tratamiento especial que se hace en el SET a los espacios finales). Y esto también tiene que ver con el número máximo de caracteres por fila (puse 10 un poco a voleo, pero el tamaño de la ventana MSDOS y el tamaño del carácter es configurable). Supongo que con estas explicaciones podrás ajustarlo a tus necesidades pero si no fuera así y quieres que te eche una mano solo tienes que decidir la "caja" a utilizar, si quieres que usemos mi sistema.
Mientras te lo piensas he incorporado tus diseños aunque sin centrarlos dentro de la "caja". Además he tenido que "meter en vereda" a la Q para que no se cargue el asunto. Si se aumenta la caja a 6 filas resultaría que salvo la Q ninguna letra tendría nada en esa zona lo que haría que el bat diera un error al intentar hacer "echo" a todo espacios (daría el mensaje "echo está desactivado". Además con esta "caja" no caben más de 6 letras por fila, de modo que he corregido el mensaje correspondiente.
@echo off Setlocal EnableDelayedExpansion cls color 17 set /a cont = 0 set rot2= set rot1= set rot3= set rot4= set rot5= set cA= ²²²²² ²² ²² ²²²²²²² ²² ²² ²² ²² ÿ set cB=²²²²²²² ²² ²² ²²²²²² ²² ²² ²²²²²²² ÿ set cC=²²²²²² ²² ²² ²² ²²²²²² ÿ set cD=²²²²² ²² ²² ²² ²² ²² ²² ²²²²² ÿ set cE=²²²²² ²² ²²²² ²² ²²²²² ÿ set cF=²²²²²² ²² ²²²² ²² ²² ÿ set cG=²²²²²² ²² ²² ²²² ²² ²² ²²²²²² ÿ set cH=²² ²² ²² ²² ²²²²²²² ²² ²² ²² ²² ÿ set cI=²² ²² ²² ²² ²² ÿ set cJ= ²²²² ²² ²² ²² ²² ²²²²²² ÿ set cK=²² ²² ²² ²² ²²²² ²² ²² ²² ²² ÿ set cL=²² ²² ²² ²² ²²²²²² ÿ set cM=² ² ²²² ²²² ²² ² ²² ²² ²² ²² ²² ÿ set cN=²² ²² ²²² ²² ²² ² ²² ²² ²²² ²² ²² ÿ set cO=²²²²²²² ²² ²² ²² ²² ²² ²² ²²²²²²² ÿ set cP=²²²²²² ²² ²² ²²²²²² ²² ²² ÿ set cR=²²²²²² ²² ²² ²²²²²²² ²² ² ²² ² ÿ set cS=²²²²²²² ²² ²²²²²²² ²² ²²²²²²² ÿ set cT=²²²²²² ²² ²² ²² ²² ÿ set cU=²² ²² ²² ²² ²² ²² ²² ²² ²²²²² ÿ set cV=² ² ² ² ² ² ² ² ²² ÿ set cW=²² ²² ²² ²² ²² ² ²² ² ² ² ² ²² ²² ÿ set cX=²² ²² ²² ²² ²² ²² ²² ²² ²² ÿ set cY=²² ²² ²² ²² ²² ²² ²² ÿ set cZ=²²²²²² ²² ²² ²² ²²²²²² ÿ set cQ=²²²²²²² ²² ²² ²² ² ²² ²²²²²²² ²² ÿ set /p pal=Escribe la palabra (de menos de 7 letras): :cont set l=!pal:~%cont%,1! if "%l%" == "" goto :fin set /a cont += 1 set rot1=!rot1! !c%l%:~0,12! set rot2=!rot2! !c%l%:~12,12! set rot3=!rot3! !c%l%:~24,12! set rot4=!rot4! !c%l%:~36,12! set rot5=!rot5! !c%l%:~48,12! goto :cont :fin set /a ncar=cont*13 Echo ! Rot1:~0,%ncar%! Echo ! Rot2:~0,%ncar%! Echo ! Rot3:~0,%ncar%! Echo ! Rot4:~0,%ncar%! Echo ! Rot5:~0,%ncar%! Pause
Ya me contarás.
Efectivamente escribe las letras que uno necesite y construye palabras de menos de 7 letras
ahora bien cuando quiero solo el código de la palabra que quiero no lo tengo, para qué?
Para colocarlo en cualquier programita que haga. Por ejemplo he conseguido el código de antivirus de usb de varias fuentes, lo corro y funciona, pero cada ves que alguien me lo pide no se observa quién lo compilo.
Si al inicio le pongo EVADU de Felix no se requiere que me pregunte que palabra deseo ver si no que necesito que aparezca la palabra que deseo, por lo tanto solo se requiere el código que forma esa palabra. Es por eso que deseaba que el bat me grabe otro bat con solo la palabra que requiero. O a su ves si me dices que internamente, puedo directamente escribir la palabra en el código, eso es lo que aparecerá como resultado, así podre usar es código para añadir a cualquier programita que consiga hacer.
Intente almenos usar solo las letras que requiero para dar como resultado
set cA= ²²²²² ²² ²² ²²²²²²² ²² ²² ²² ²² ÿ set cD=²²²²² ²² ²² ²² ²² ²² ²² ²²²²² ÿ set cE=²²²²² ²² ²²²² ²² ²²²²² ÿ set cF=²²²²²² ²² ²²²² ²² ²² ÿ set cI=²² ²² ²² ²² ²² ÿ set cL=²² ²² ²² ²² ²²²²²² ÿ set cV=² ² ² ² ² ² ² ² ²² ÿ set cU=²² ²² ²² ²² ²² ²² ²² ²² ²²²²² ÿ set cX=²² ²² ²² ²² ²² ²² ²² ²² ²² ÿ set c =ÿ
para escribir EVADU Felix (código por separado, pues no da posibilidad a palabras separadas por espacio o por lineas en un mismo codigo. por espacio le puse set c =ÿ pero no es buena idea pues no se nota el espacio)
Pero me pide que escriba las letras y así no debería preguntar al ejecutar un programa sino directamente salir la palabra.
Sin embargo reconozco que todo esto esta de maravilla.
Respecto a incluir el espacio como un carácter más en la "palabra" ibas por buen camino, pero tenías que haber rellenado toda la "estructura" de la "caja" con espacios. Respecto a salvar el rótulo en un bat que lo genere el truco es el mismo que usamos para las letras individuales. Te incluyo las dos cosas a continuación:
Para el "espacio": set cU=²² ²² ²² ²² ²² ²² ²² ²² ²²²²² ÿ set cX=²² ²² ²² ²² ²² ²² ²² ²² ²² ÿ set c = ÿ Para guardar el rótulo en rotulo.bat: >rotulo.bat echo @echo off >>rotulo.bat echo echo ! Rot1:~0,%ncar%! >>rotulo.bat echo echo ! Rot2:~0,%ncar%! >>rotulo.bat echo echo ! Rot3:~0,%ncar%! >>rotulo.bat echo echo ! Rot4:~0,%ncar%! >>rotulo.bat echo echo ! Rot5:~0,%ncar%!
Es genial ahora he obtenido el código en otro bat para decir EVAD POR FELIX, GRACIAS Gracias no se ve bien pero se entiende. El tamaño de la letra según me has explicado es el responsable de ciertas limitaciones para una etiqueta con varias palabras cuyo tamaño lo permita, entonces he puesto de poco a poco o por bloque, así:
@echo off echo ÿ ²²²²² ² ² ²²²²² ²²²²² echo ÿ ²² ² ² ²² ²² ²² ²² echo ÿ ²²²² ² ² ²²²²²²² ²² ²² echo ÿ ²² ² ² ²² ²² ²² ²² echo ÿ ²²²²² ÿ ²² ÿ ²² ²² ÿ ²²²²² ÿ echo. echo ÿ ²²²²²² ²²²²²²² ²²²²²² echo ÿ ²² ²² ²² ²² ²² ²² echo ÿ ²²²²²² ²² ²² ²²²²²²² echo ÿ ²² ²² ²² ²² ² echo ÿ ²² ÿ ²²²²²²² ÿ ²² ² ÿ echo. echo ²²²²²² ²²²²² ²² ²² ²² ²² echo ²² ²² ²² ²² ²² ²² echo ²²²² ²²²² ²² ²² ²² echo ²² ²² ²² ²² ²² ²² echo ²² ÿ ²²²²² ÿ ²²²²²² ÿ ²² ÿ ²² ²² ÿ pause
Gracias
@echo off echo ²²²²²² ²²²²²² ²²²²² ²²²²²² ²² ²²²²² ²²²²²²² echo ²² ²² ²² ²² ²² ²² ²² ²² ²² ²² echo ²² ²²² ²²²²²²² ²²²²²²² ²² ²² ²²²²²²² ²²²²²²² echo ²² ²² ²² ² ²² ²² ²² ²² ²² ²² ²² echo ²²²²²² ÿ ²² ² ÿ ²² ²² ÿ ²²²²²² ÿ ²² ÿ ²² ²² ÿ ²²²²²²² ÿ pause
Cuando uso el reemplazar en el block de notas puedo reemplazar el ² por cualquier otro, espero no se desconfigure y con eso logre cambiar de tipo de letra, con este ° si funciona el reemplazo.
Ha sido muy productivo este tema, y eso te lo debo a tí, tu paciencia y altruismo
Muy bien. Me alegro mucho de haberte servido de ayuda. Y, además, yo también he aprendido alguna cosilla y he puesto a prueba la imaginación, cosa que nunca viene mal.
Suelo entrar en la página de Todoexpertos casi a diario, incluso aunque no me lleguen las consultas. Lo cierto es que sobre mi "especialidad" no hay demasiadas.
Aprovecharé para decirte que en las nuevas versiones de Windows hay una shell mucho más potente que la heredada de MSDOS. Se llama powershell, es orientada a objetos y creo que vale la pena empezar a usarla, si es que todavía no lo has hecho. En ella no tengo gran experiencia pero la poca que tengo ha resultado muy positiva.
- Compartir respuesta