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
| | |-+  [Ayuda] Guardar Información en Batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] Guardar Información en Batch  (Leído 7,609 veces)
Mr. Bit

Desconectado Desconectado

Mensajes: 30



Ver Perfil
[Ayuda] Guardar Información en Batch
« en: 14 Mayo 2019, 00:34 am »

Buenas! Este es el primer post que subo a este Foro. Soy muy nuevo en el tema de Batch. Bueno, no realmente "nuevo", ya que lo conozco y me se algunos comandos desde hace años ya. Sin embargo, nunca he podido avanzar mucho con Batch. Tengo ganas de crear programas interesantes, pero por causa de mi desconocimiento, no puedo.

Mi duda es: ¿Como guardo información dentro de un Batch?
La pregunta no se entiende bien así dicha, así que decidí realizar un par de ejemplos:

Imaginemos que en el Batch dice que mi dinero es $500. Me compro una tarjeta gráfica (en el Batch claro, todo virtual) que vale $100.

Quiero que haya un valor que sea por ejemplo %dinero% pero totalmente fijo. Si tengo $500 y gasto $100  me quedan $400. Y que eso se guarde. Que no vuelva a tener $500 de vuelta. Son solo ejemplos.

Tristemente para mi, no se mucho de programación, por lo tanto no se como expresar de manera limpia y ordenada mi duda. Lo mas parecido que he hecho fue Pawno, aunque todos los códigos y programas son bastante parecidos.

Espero que en este Foro pueda aprender mas de lo que ya se. Muchas gracias de ante mano y saludos!


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.068



Ver Perfil
Re: [Ayuda] Guardar Información en Batch
« Respuesta #1 en: 14 Mayo 2019, 02:58 am »

Saludos,

- Es cierto que no es fácil encontrar cursos o tutoriales de cmd o batch "de calidad", jeje siempre hay textos feos y desordenados.

- Yo te recomendaría leerte este Tutorial, tiene buena calidad de edición y explicación (incluye pdf descargable):
https://sites.google.com/site/nikos3194rfcindex/home/batch

- Otros manuales de Batch/Cmd básicos de regular calidad (debido al lenguaje XD) es:
https://openlibra.com/es/book/cmd-sin-secretos-v-2

- Luego puedes pasarte a leer los manuales de SirDarckcat:
https://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html

- También tener a mano la referencia completa de Bacth/Cmd en inglés:
https://ss64.com/nt/

- Para dudas puntuales tienes este foro, pero recomendaría googlear tus dudas, por ejemplo StackOverflow es muy buena fuente.

- Siempre puedes hacer pruebas en tu consola (línea de comandos o Símbolo del Sistema), por ejemplo:

-- Guardo 500 en un archivo de texto billetera usando la clásica redirección
-- Reviso que contiene el archivo anterior
-- Creo una variable dinero y redirecciono el contenido del archivo billetera a dicha variable
-- Reviso que contiene mi variable
-- Hago una operación matemática con mi variable, restandole 100
-- Vuelvo a revisar el contenido de mi variable
-- Guardo el valor de mi variable al archivo billetera.txt
-- Reviso el contenido del archivo billetera.txt

c:\Users\EdSon\Desktop>echo 500 > billetera.txt

c:\Users\EdSon\Desktop>type billetera.txt
500

c:\Users\EdSon\Desktop>set /p dinero=<billetera.txt

c:\Users\EdSon\Desktop>set dinero
dinero=500

c:\Users\EdSon\Desktop>set /a dinero= dinero - 100
400
c:\Users\EdSon\Desktop>set dinero
dinero=400

c:\Users\EdSon\Desktop>echo %dinero% > billetera.txt

c:\Users\EdSon\Desktop>type billetera.txt
400

c:\Users\EdSon\Desktop>


En línea

Nucleorion

Desconectado Desconectado

Mensajes: 72


Ver Perfil
Re: [Ayuda] Guardar Información en Batch
« Respuesta #2 en: 14 Mayo 2019, 11:26 am »

Que recopilación tan buena! Gracias!
En línea

Mr. Bit

Desconectado Desconectado

Mensajes: 30



Ver Perfil
Re: [Ayuda] Guardar Información en Batch
« Respuesta #3 en: 15 Mayo 2019, 01:07 am »

Gracias EdePC!

Lo que pasa es que yo no se muchas cosas de Batch, como ya he dicho anteriormente. No se como crear una Variable en Batch.

También, y como me pasaba con Pawno (programa mencionado en el post), no se EXACTAMENTE como funcionan las Variables o para que sirven.
Si pueden decirme como crear una en Batch y explicarme de manera sencilla y clara que es una Variable, se los agradecería un montón.

Gracias de vuelta y espero sus respuestas!  ;D
En línea

Nucleorion

Desconectado Desconectado

Mensajes: 72


Ver Perfil
Re: [Ayuda] Guardar Información en Batch
« Respuesta #4 en: 15 Mayo 2019, 10:19 am »

La pregunta es bastante basica y generica. Como casi nunca puedo responder a las preguntas complejas aprovechare para hacer mi aportación, y aunque mis conocimientos son limitados si que tengo mucha practica en iniciar a la gente en la programación en mi trabajo. La explicación te servira para cualquier lenguaje de programación, aunque en el ejemplo usaremos batch tal y como preguntas en el asunto. Voy a suponer tambien que has buscado por internet y no has comprendido las respuestas.

Una variable es un lugar donde guardar datos. Imaginemos que quieres hacer un programa que le diga al usuario cuantos dias cumple el dia de su cumpleaños (imaginando para simplificar que todos los años tienen 365 dias). Nuestro programa tendrá que multiplicar los años por los dias del año, pero como los años que tiene el usuario pueden variar le preguntaremos al usuario y los almacenamos en una variable que en este caso le llamaremos aniosusuario.

Crear una variable y darle un valor se hace asi:
Código
  1. set dias=365
Aunque en este caso el valor no varie tiene ciertas ventajas usar variables aquí tambien.

Y para preguntar al usuario cuantos años tiene y almacenar el valor en una variable para operar con ella seria asi:
Código
  1. set /p aniosusuario=Cuantos años has cumplido hoy?

Aqui el programa completo:
Código
  1. @echo off
  2. :inicio
  3. cls
  4. set /p aniosusuario=Cuantos años has cumplido hoy?
  5. set dias=365
  6. set /a resultado=%aniosusuario% * %dias%
  7. echo tienes %resultado% dias
  8. goto inicio

Aqui el programa comentando lo que hace cada linea:
Código
  1. @echo off
  2.  
  3. REM Ponemos REM para crear un comentario, no tiene incidencia en el programa, es solo para guia del programador
  4.  
  5. REM Ponemos una etiqueta llamada inicio para que cuando acabe el programa con goto vuelva a inicio y comience de nuevo
  6. :inicio
  7.  
  8. REM con cls borramos la pantalla cada vez
  9. cls
  10.  
  11. REM Preguntamos al usuario cuantos años tiene y lo guardamos en la variable años que creamos con set
  12. set /p aniosusuario=Cuantos años has cumplido hoy?
  13.  
  14. REM creamos la variable dias y le asignamos el valor
  15. set dias=365
  16.  
  17. REM para operar con las variables creadas ponemos % al principio y al final de la variable
  18. set /a resultado=%aniosusuario% * %dias%
  19.  
  20. REM aqui mostramos el resultado intercalando el texto con la variable poniendo tambien %
  21. echo tienes %resultado% dias
  22.  
  23. REM paramos el programa para que el usuario pueda ver el resultado hasta que pulse una tecla
  24.  
  25. REM volvemos al punto de partida que está en la etiqueta inicio
  26. goto inicio

Consideraciones a tener en cuenta:
Los valores almacenados en las variables se destruyen al cerrar el programa o al recalcular o reasignar los valores.
Los lenguajes de programación no suelen operar internamente con ñ ni acentos por lo que no los usaremos.

PD:
Código
  1. En la previsualizacion, porque la escribir años aparece asi: a& # 241;os y al escribir  a n i o s  aparece asi: años?
  2.  
  3. Bueno se descompone todo al guardar y luego al previsualizar se vuelve a descomponer asi que no se si se me entendera
  4.  
« Última modificación: 15 Mayo 2019, 10:28 am por Nucleorion » En línea

Mr. Bit

Desconectado Desconectado

Mensajes: 30



Ver Perfil
Re: [Ayuda] Guardar Información en Batch
« Respuesta #5 en: 16 Mayo 2019, 03:01 am »

Muchas gracias! En serio!

Si, eso de los "%ejemplo%", lo de "set /p" y todo lo basico me lo se. No sabia como crear una variable, pero ahora si me ha quedado claro gracias a ti!

Una pregunta: ¿Que puedo colocar en el Valor de una variable?

set variable=(Aquí que puedo colocar)
En línea

Nucleorion

Desconectado Desconectado

Mensajes: 72


Ver Perfil
Re: [Ayuda] Guardar Información en Batch
« Respuesta #6 en: 16 Mayo 2019, 08:57 am »

numeros y letras.

Ahora con lo aprendido haz pruebas y vete haciendo versiones del programa. Por ejemplo que te pregunte tu nombre y luego que te diga pepito tiene 10526 dias. Si guardas las versiones con nombres diferentes no vas a romper ni perder nada por hacer todas las pruebas que quieras.

En línea

Mr. Bit

Desconectado Desconectado

Mensajes: 30



Ver Perfil
Re: [Ayuda] Guardar Información en Batch
« Respuesta #7 en: 18 Mayo 2019, 00:42 am »

Gracias! Y dime ¿Las variables deben ser escritas al principio del codigo o en donde se escriba no afecta nada?
En línea

Nucleorion

Desconectado Desconectado

Mensajes: 72


Ver Perfil
Re: [Ayuda] Guardar Información en Batch
« Respuesta #8 en: 20 Mayo 2019, 09:22 am »

en batch basta con crearlas antes de usarlas
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.819



Ver Perfil
Re: [Ayuda] Guardar Información en Batch
« Respuesta #9 en: 20 Mayo 2019, 21:03 pm »

De por si, lo primero que en mi opinión cualquier persona te debería aconsejar, es usar cualquier otro lenguaje distinto a Batch. Tienes VisualBasicScript y PowerShell nativamente soportados en Windows, siendo ese último infinitamente más sofisticado (y no por ello más dificil de usar) que los dos anteriores.

Aparte, la manipulación de un archivo local con la única finalidad de almacenar 1 valor, lo veo completamente engorroso e innecesario. En otros casos y para otros lenguajes podría ser razonable, desde luego, mediante la serialización de objetos o a pelo escribiendo en un archivo de texto plano de inicialización (.ini), pero estamos hablando de Batch, y crear dependencias de archivos de texto plano para almacenar un único valor...
En su lugar, puedes manipular una variable de entorno. O como alternativa, manipular directamente una entrada en el registro de Windows. Esto último es tedioso hacerlo en Batch por que dependes de un programa externo (como para casi todo lo demás), REG.EXE para poder realizar operaciones de lectura y escritura en el registro. Te recomiendo cualquier otro lenguaje, insisto.

Por último, te muestro un ejemplo de batch-script utilizando una variable de entorno personalizada en la que puedes almacenar un valor de forma permanente...

Código
  1. @ECHO OFF
  2.  
  3. :: Nombe de variable de entorno a definir en el sistema.
  4. SET "envVarName=GLOBAL_MONEY"
  5.  
  6. :: Obtener valor actual de variable de entorno.
  7. FOR /F "TOKENS=3 DELIMS=^ " %%# in (
  8. 'REG QUERY "HKCU\Environment" ^| FINDSTR /I "\<%envVarName%\>"'
  9. ) DO (
  10. SET /A "CURRENT_MONEY=%%#"
  11. )2>NUL
  12. ECHO.Valor actual: %CURRENT_MONEY%
  13.  
  14. :: Añadir $500
  15. SET /A "CURRENT_MONEY=%CURRENT_MONEY%" + 500
  16. ECHO.Valor nuevo: %CURRENT_MONEY%
  17.  
  18. :: Guardar los cambios en la variable de entorno.
  19. (SETX "%envVarName%" "%CURRENT_MONEY%")1>NUL
  20.  
  21. EXIT /B 0



Por cierto, yo también publiqué una guía de aprendizaje de Batch:
...pero no me apateció acabarlo por desmotivación.

Saludos.
« Última modificación: 20 Mayo 2019, 21:21 pm por Eleкtro » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Se puede guardar informacion que no sea en un archivo con .NET ?
.NET (C#, VB.NET, ASP)
nico56 7 5,134 Último mensaje 31 Enero 2010, 01:14 am
por nico56
[AYUDA]Guardar informacion Con AutoIT
Scripting
Srare 0 1,686 Último mensaje 21 Abril 2014, 21:51 pm
por Srare
[ayuda] Guardar información - java
Java
samirllorente 1 1,614 Último mensaje 14 Enero 2015, 14:37 pm
por iGust4v0x
Guardar informacion en una pila
.NET (C#, VB.NET, ASP)
TickTack 8 7,005 Último mensaje 22 Julio 2017, 23:46 pm
por Serapis
Ayuda con programa Batch al guardar ejecución
Programación General
Baphomet2204 2 2,291 Último mensaje 5 Diciembre 2018, 23:01 pm
por Baphomet2204
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines