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] Problema al setear variables en la consola de windows
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Problema al setear variables en la consola de windows  (Leído 7,184 veces)
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
[BATCH] Problema al setear variables en la consola de windows
« en: 18 Julio 2011, 05:31 am »

tengo un problema peculiar...

No quiero coger malos hábitos pero como se me da muy bien batch, pues quiero usar un código de BATCH en mi procedimiento, que me ahorrará varios días y montones de líneas más...

En fin, la línea es esta:

Código:
 Shell "cmd start cmd /K set ruta=" & FName + "\" & archivo + "& echo %ruta%"

Como veis, uso cmd /K para que la ventana del cmd permanezca, seteo la variable ruta y luego hago un "echo" para mostrar como quedó la variable ruta... ... ...Pues el echo no funciona! en cambio si yo escribo manualmente echo %ruta% en esa misma ventana, si que aparece bien seteada.

No lo entiendo, he repasado y modificado 100 veces ese código, y creo que no le falta ni le sobra ningún caracter, la CMD debería mostrarme la variable.

No se si el problema es la manera de interactuar del VB con la consola de windows, o directamente el problema es de la cmd..no lo se.. ¿Alguna idea?


« Última modificación: 19 Julio 2011, 04:25 am por pitoloko » En línea

No he vuelto, solo estoy de paso.
$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: Problema al setear variables en la consola de windows
« Respuesta #1 en: 18 Julio 2011, 06:16 am »

No guarda la variable tienes razon, que raro.. yo primero pensaba que era porq no andaria el && pero si pones:

Shell "cmd /K ping -n 10 localhost&&echo listo"

Funciona, asique me interesa saber el porque no guarda la variable y solo al intentar otra vez seguido si, pero desde consola, porque desde vb6 ya abre otro nuevo y es lo mismo :S


En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Problema al setear variables en la consola de windows
« Respuesta #2 en: 18 Julio 2011, 06:25 am »

Código:
 Shell "cmd start cmd /K set ruta=" & FName + "\" & archivo + "& echo %ruta%"

La sintáxis está mal... " & FName + " recuerda que en vb no puedes concatenar con +, debes usar & siempre, además el & final te lo tomará como parte de la variable i no le das un espacio en blanco para decirle a la consola que será una segunda instrucción, de todas formas te recomiendo usar && en ves de &

Código:
 Shell "cmd start cmd /K set ruta=" & FName & "\" & archivo & " && echo %ruta%"

Prueba con %% en ves de % porque a veces da problemas solo, ya me ha pasado antes, te digo esto por experiencia.

Saludos.

Edito---------->
Código
  1. Private Sub Command1_Click()
  2. Dim FName As String, archivo As String
  3. FName = "c:\"
  4. archivo = "test\a b c\x.test"
  5.  
  6. Call Shell("cmd start cmd /K set ruta=" & FName & "\" & archivo & " | echo %ruta% && pause", vbNormalFocus)
  7. End Sub
  8.  
  9. ' set ruta=c:\test\a b c\x.test && echo %ruta% && pause
  10.  

Lo probé y tampoco funciona, supongo de de una sola linea no se puede setear y lanzar el echo:

Código:
set ruta=c:\test\a b c\x.test && echo %ruta% && pause
Código:
set ruta=c:\test\a b c\x.test & echo %ruta% & pause
Código:
set ruta=c:\test\a b c\x.test | echo %ruta% & pause
Código:
set ruta=c:\test\a b c\x.test & echo %ruta% | pause

Desde la consola setean pero no imprimen inmediatamente la variable, hay que lanzar un segundo echo para eso.

Esto ya no es problema de visual basic sino de batch.
« Última modificación: 18 Julio 2011, 06:43 am por WHK » En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Problema al setear variables en la consola de windows
« Respuesta #3 en: 18 Julio 2011, 20:59 pm »

gracias por el tiempo que os habeis tomado, sobretodo whk y la cantidad de intentos...

Probé a concatenar con & y con +, probé usando dos %% en vez de una, probé lo mismo que tú, probé el comando "CMD" con distintos modificadores, probé usando setlocal de mil maneras expandiendo la variable, lo he probado todo...

Si alguien más quiere probar, aqui dejo el ejemplo (No funciona), solo hay que crear un nuevo proyecto en VB, pegar el código y ejecutarlo... y después de ejecutarlo, en la ventana del CMD escribir "Echo %ruta%" ... es increible.

Código
  1. Option Explicit
  2. Private Sub Form_Load()
  3.  
  4. Dim FNAME As String
  5. Dim archivo As String
  6. FNAME = "C:\users\administrador\desktop"
  7. archivo = "1 2 3 4.msu"
  8. Shell "cmd start cmd /K set ruta=" & FNAME & "\" & archivo & " && echo %ruta%"
  9. End Sub


EDITO: otro ejemplo:

Código:
Shell "cmd start cmd /c set ruta=" & FNAME & "\" & archivo & " && if defined ruta PAUSE"

Con eso comprobamos que la variable se ha definido, y el cmd se pausa. funciona. Entonces el cmd si que reconoce que la variable se ha definido, pero echo no lo reconoce?  :-\




Analizando la situación, lanzo la pregunta para Leo o quien sepa la respuesta...

¿En un archivo .BAT, Como se puede setear una variable y poder usarla ¡solamente en una línea!?
« Última modificación: 18 Julio 2011, 22:00 pm por pitoloko » En línea

No he vuelto, solo estoy de paso.
$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: Problema al setear variables en la consola de windows
« Respuesta #4 en: 18 Julio 2011, 23:11 pm »

Espero la respuesta :)

pd: Pitoloko, usa solo Shell "cmd /k" en vez de Shell "cmd start cmd /k" que esta de mas, pero no cambia en nada sobre lo de setear la variable e imprimirla
En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: Problema al setear variables en la consola de windows
« Respuesta #5 en: 18 Julio 2011, 23:16 pm »

Prueba colocando

Código
  1. Shell "cmd start cmd /K set ruta=" & FNAME & "\" & archivo & " && echo "%ruta%""
  2.  
  3.  

A lo mejor te da problemas porque si la ruta tiene espacios, el cdm da error.

Saludos
En línea

Asdf debería ser algún tipo de función.
$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: Problema al setear variables en la consola de windows
« Respuesta #6 en: 18 Julio 2011, 23:20 pm »

Yo ya probe de muchas formas asique no es eso, esperamos la respuesta de alguien que pruebe antes de comentar que es la idea
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Variables dentro de variables (batch)
Scripting
MK-Ultra 8 7,845 Último mensaje 6 Febrero 2008, 23:18 pm
por GUN$
[batch] problema con variables y espacios[Solucionado]
Scripting
corax 4 14,182 Último mensaje 10 Octubre 2009, 19:12 pm
por corax
[Batch] Problema con las variables [Solucionado] « 1 2 »
Scripting
DA KILLER 17 13,028 Último mensaje 19 Mayo 2010, 03:54 am
por DA KILLER
(Solucionado) [ Batch ] - Problema matemático con variables...
Scripting
Eleкtro 4 5,630 Último mensaje 11 Noviembre 2011, 20:17 pm
por Eleкtro
Como setear una red ad hoc en modo infraestructura
Redes
ferindi26 0 2,314 Último mensaje 4 Junio 2012, 17:10 pm
por ferindi26
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines