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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] Cómo se podrían guardar variables?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Cómo se podrían guardar variables?  (Leído 18,350 veces)
Duning

Desconectado Desconectado

Mensajes: 9



Ver Perfil
[BATCH] Cómo se podrían guardar variables?
« en: 31 Julio 2012, 01:14 am »

Hola....otra vez xD.

Bueno, lo que vengo preguntado es cómo puedo hacer para que el bat pueda leer líneas de un txt (u otro tipo) para utilizarlas como constates una vez cerrado el bat, me explico.

Quiero que alguien venga y:

Código
  1. set /p NOMBRE=
escriba por ejemplo "pepe"

Cierre el bat, lo vuelva a abrir y cuando haga

Código
  1. echo %NOMBRE%
Salga pepe

Quiero esto porque estoy intentado hacer un bat en el que cambias nombres a una serie de cosas. Y cuando re abras el bat, quiero que las recuerde.

Pues sobretodo eso, gracias por adelantado.


« Última modificación: 31 Julio 2012, 02:30 am por EleKtro H@cker » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: Cómo se podrían guardar variables?
« Respuesta #1 en: 31 Julio 2012, 02:24 am »

Las variables, logicamente solo tienen efecto en la ejecución del script... Y cuando finaliza la instancia de la CMD, finaliza el almacenamiento de las variables en la memoria.

Hay varias formas de "recordar" eso... Guardando la variable "nombre" en un archivo temporal, O guardandolo en el mismo script (Al final del script), O agregando una variable de entorno al sistema:

Código
  1. @Echo OFF
  2. If defined NOMBRE (Echo Varible NOMBRE = %NOMBRE%)
  3. SETX "NOMBRE" "elhacker.net" >NUL

Saludos


« Última modificación: 31 Julio 2012, 02:35 am por EleKtro H@cker » En línea

Duning

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Re: Cómo se podrían guardar variables?
« Respuesta #2 en: 31 Julio 2012, 14:48 pm »

Las variables, logicamente solo tienen efecto en la ejecución del script... Y cuando finaliza la instancia de la CMD, finaliza el almacenamiento de las variables en la memoria.

Hay varias formas de "recordar" eso... Guardando la variable "nombre" en un archivo temporal, O guardandolo en el mismo script (Al final del script), O agregando una variable de entorno al sistema:

Código
  1. @Echo OFF
  2. If defined NOMBRE (Echo Varible NOMBRE = %NOMBRE%)
  3. SETX "NOMBRE" "elhacker.net" >NUL

Saludos


Código
  1. "SETX" no se reconoce como un comando interno o externo,
  2. programa o archivo de lotes ejecutable.
  3. Presione una tecla para continuar . . .

Me salta ese error :C alguna idea? btw estoy en XP

Otra cosa son unos errores que no se por que tengo :C

1.
Código
  1. COPY minecrafts1.jar %appdata%\.minecraft\bin\Jars
Me dice "La sintaxis del comando no es correcta."
Pero aqui dice que es así...
http://www.elhacker.net/ProgramacionBat.html

Citar
COPY [opciones] [origen] [destino]

2.

Código
  1. RD %HOMEPATH%\Escritorio\Meter_el_Jar_aqui

Me dice:

Código
  1. El nombre del directorio no es válido.
  2. El sistema no puede hallar el archivo especificado.
  3. El sistema no puede hallar la ruta especificada.

Esto no lo entiendo para nada, me salen 3 errores por una sola linea de comando, y lo unico que quiero hacer es borrar la carpeta "Meter_el_Jar_aquí" que está ubicada en "%HOMEPATH%\Escritorio\Meter_el_Jar_aqui"

Una ayudita por favor...
« Última modificación: 31 Julio 2012, 15:40 pm por Duning » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: Cómo se podrían guardar variables?
« Respuesta #3 en: 31 Julio 2012, 16:33 pm »

Te voy a dar un consejo para novatos:

Si alguna vez te falla un comando, usa "ECHO" al principio del comando para ver el error.

Ejemplo:
Este comando no te funciona:
Código:
RD %HOMEPATH%\Escritorio\Meter_el_Jar_aqui

Con echo podemos ver porqué:


Como ves, La variable %HOMEPATH% no usa la letra de la unidad, Y sin la letra (C:) el comando falla.







Código
  1. "SETX" no se reconoce como un comando interno o externo,
estoy en XP

SETX no está instalado en WindowsXP por defecto (En Windows 7 sí). Aquí puedes bajarlo: Windows XP Service Pack 2 Support Tools



Código
  1. COPY minecrafts1.jar %appdata%\.minecraft\bin\Jars
Me dice "La sintaxis del comando no es correcta."

El comando falla porque falta el slash al final de la ruta. (\)
Aparte, Deberías usar comillas dobles cuando escribas rutas que puedan contener espacios.

Código:
COPY "minecrafts1.jar" "%appdata%\.minecraft\bin\Jars\"
Debes usarlo siempre en el comando copy para que pueda diferenciar lo que es una carpeta, y lo que es un archivo.



Código
  1. RD %HOMEPATH%\Escritorio\Meter_el_Jar_aqui
Código
  1. El nombre del directorio no es válido.

Esto ya lo expliqué antes pero no te lo solucioné, Ok, Debes usar la variable %USERPROFILE%.
Código:
RD "%userprofile%\Desktop\Meter_el_Jar_aqui"


Saludos
En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: [BATCH] Cómo se podrían guardar variables?
« Respuesta #4 en: 31 Julio 2012, 16:41 pm »

Si te es necesario mantener el valor de una variable, siempre puedes guardarla como variable de entorno.

Vamos a ver, la ruta del registro es esta:
Código:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Ahí, como puedes ver, todos los valores son REG_SZ, por tanto, haciendo un:

Código:
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "nombre" /d "pepe" /f

Ahora cierra la cmd. Vuelve a abrirla (aunque creo que es necesario reiniciar primero el sistema). Escribe:

Código:
echo.%nombre%

Y como ves, el nombre de "pepe" quedó guardado.

De todas formas, estoy seguro de que para cualquier cosa que pretendas hacer, habrá métodos más eficientes.
En línea

Duning

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Re: [BATCH] Cómo se podrían guardar variables?
« Respuesta #5 en: 31 Julio 2012, 16:45 pm »

Muchísimas gracias por todo ^^

Pero una cosa...

Citar
SETX no está instalado en WindowsXP por defecto (En Windows 7 sí). Aquí puedes bajarlo: Windows XP Service Pack 2 Support Tools

Y no hay otro modo que no sea con el SETX para XP?

Enserio tio, muchísimas gracias :D



Si te es necesario mantener el valor de una variable, siempre puedes guardarla como variable de entorno.

Vamos a ver, la ruta del registro es esta:
Código:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Ahí, como puedes ver, todos los valores son REG_SZ, por tanto, haciendo un:

Código:
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "nombre" /d "pepe" /f

Ahora cierra la cmd. Vuelve a abrirla (aunque creo que es necesario reiniciar primero el sistema). Escribe:

Código:
echo.%nombre%

Y como ves, el nombre de "pepe" quedó guardado.

De todas formas, estoy seguro de que para cualquier cosa que pretendas hacer, habrá métodos más eficientes.

Voy a probarlo.... wait... xD



Edito:

Si te es necesario mantener el valor de una variable, siempre puedes guardarla como variable de entorno.

Vamos a ver, la ruta del registro es esta:
Código:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Ahí, como puedes ver, todos los valores son REG_SZ, por tanto, haciendo un:

Código:
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "nombre" /d "pepe" /f

Ahora cierra la cmd. Vuelve a abrirla (aunque creo que es necesario reiniciar primero el sistema). Escribe:

Código:
echo.%nombre%

Y como ves, el nombre de "pepe" quedó guardado.

De todas formas, estoy seguro de que para cualquier cosa que pretendas hacer, habrá métodos más eficientes.


A ver:

Código
  1. @echo off
  2. REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "s1" /d "Slot vacia"
  3. echo %s1%

Debería salir "Slot vacia" no? Pues no sale :C pero cuando intento volverlo a hacer me pregunta si quiero substituir el valor actual de "s1".

Que estoy haciendo mal?
« Última modificación: 31 Julio 2012, 17:04 pm por Duning » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: [BATCH] Cómo se podrían guardar variables?
« Respuesta #6 en: 31 Julio 2012, 17:14 pm »

Que estoy haciendo mal?

creo que es necesario reiniciar primero el sistema

saludos
En línea

Danirs

Desconectado Desconectado

Mensajes: 71



Ver Perfil
Re: [BATCH] Cómo se podrían guardar variables?
« Respuesta #7 en: 31 Julio 2012, 17:59 pm »

Uuups lo puese aqui en vez del tema del virulator lo siento xD moverlo

Buenas!

Perdon por el doble post pero tengo una par de dudas acerca del gran trabajo del virulator.
Queria saber el orden de prioridades al ejecutar una tarea, si programo 10 cual se ejecuta primero? o se ejecutan todos a la vez? y si es asi como hago para ejecutarlas en el orden deseado? Creo que pido demasiado ;D Pero hacer lo que podais.

Y la ultima duda, que es eso del "efecto matrix" y "fake virus"

Gracias por la atencion y un gran trabajo.
En línea

Qué es la vida un frenesí. Qué es la vida una ilusión, una sombra, una ficción. Que todo en la vida es sueño y los sueños, sueños son.
Duning

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Re: [BATCH] Cómo se podrían guardar variables?
« Respuesta #8 en: 31 Julio 2012, 18:04 pm »

saludos

Pues sí, había que reiniciar, entoces no me sirve ese método D:

Alguna forma que sirva en XP, Vista 7 (sin instalar aquello) y sin tener que reiniciar?

Luego,
Código
  1. RD "%userprofile%\Escritorio\Meter_el_Jar_aqui"
Tengo que poner "Escritorio", no Desktop si no a mi no me funciona, y en Windows 7 funcionará?

Otro,
Código
  1. REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "s1" /d "Slot vacia"

Cada vez que quiero cambiarle el valor, me dice que ya existe, y me pregunta si quiero sobreescribirlo. ¿Como hago para que no lo pregunte, sino que directamete lo sobreescriba sin preguntar? (¿Sería con /Q ?)
« Última modificación: 31 Julio 2012, 18:12 pm por Duning » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: [BATCH] Cómo se podrían guardar variables?
« Respuesta #9 en: 31 Julio 2012, 19:11 pm »

Alguna forma que sirva en XP, Vista 7 (sin instalar aquello) y sin tener que reiniciar?
Código
  1. @Echo OFF
  2. If Exist ".\data.tmp" (For /F "Tokens=*" %%@ in (data.tmp) do (Echo Bienvenido %%@))
  3. Set /P Nombre=^>^>
  4. Echo %NOMBRE%>"data.tmp"



Código
  1. RD "%userprofile%\Escritorio\Meter_el_Jar_aqui"
Tengo que poner "Escritorio", no Desktop si no a mi no me funciona, y en Windows 7 funcionará?
No, No funcionará.
Puedes hacer esto:
Código
  1. RD "%userprofile%\Escritorio\Meter_el_Jar_aqui" 2>NUL || (RD "%userprofile%\desktop\Meter_el_Jar_aqui")



Código
  1. REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "s1" /d "Slot vacia"
¿Como hago para que no lo pregunte, sino que directamete lo sobreescriba sin preguntar?
(¿Sería con /Q ?)
Lee la ayuda del comando y lo sabrás, No ibas mal encamindado...

Código:
Reg /?

Saludos
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Guardar variables en el ejecutable
Programación Visual Basic
wifinet 1 1,614 Último mensaje 4 Febrero 2006, 18:33 pm
por BenRu
Guardar valores en variables
Scripting
kraszic 4 2,767 Último mensaje 19 Enero 2008, 03:14 am
por warlock45
Variables dentro de variables (batch)
Scripting
MK-Ultra 8 7,432 Último mensaje 6 Febrero 2008, 23:18 pm
por GUN$
[BATCH] Guardar vaiables
Scripting
tmb90 6 3,271 Último mensaje 18 Agosto 2012, 04:25 am
por tmb90
Guardar variables en disco
Programación C/C++
Bròquil 3 2,172 Último mensaje 7 Diciembre 2013, 01:33 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines