elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 06:56  


Tema destacado: Únete al Grupo Steam elhacker.NET

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  [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 1,813 veces)
pitoloko


Desconectado Desconectado

Mensajes: 2.500


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

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 por pitoloko » En línea

pa que
$Edu$


Desconectado Desconectado

Mensajes: 1.416



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

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

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
WHK
吴阿卡
Ex-Staff
*
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


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

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
Private Sub Command1_Click()
Dim FName As String, archivo As String
FName = "c:\"
archivo = "test\a b c\x.test"
 
Call Shell("cmd start cmd /K set ruta=" & FName & "\" & archivo & " | echo %ruta% && pause", vbNormalFocus)
End Sub
 
' set ruta=c:\test\a b c\x.test && echo %ruta% && pause

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 por WHK » En línea

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
pitoloko


Desconectado Desconectado

Mensajes: 2.500


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

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
Option Explicit
Private Sub Form_Load()
 
Dim FNAME As String
Dim archivo As String
FNAME = "C:\users\administrador\desktop"
archivo = "1 2 3 4.msu"
Shell "cmd start cmd /K set ruta=" & FNAME & "\" & archivo & " && echo %ruta%"
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 por pitoloko » En línea

pa que
$Edu$


Desconectado Desconectado

Mensajes: 1.416



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

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

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
Francisasdasd

Desconectado Desconectado

Mensajes: 175


Whit The Monsters In My Head :S


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

Prueba colocando

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

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

Saludos
En línea

:).
$Edu$


Desconectado Desconectado

Mensajes: 1.416



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

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

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Variables dentro de variables (batch)
Scripting
^Arkangel^ 8 2,316 Último mensaje 6 Febrero 2008, 23:18
por GUN$
Variables batch y vb
Programación Visual Basic
gdegrau 3 711 Último mensaje 27 Enero 2009, 20:03
por krackwar
[batch] problema con variables y espacios[Solucionado]
Scripting
corax 4 3,619 Último mensaje 10 Octubre 2009, 19:12
por corax
[Batch] Problema con las variables [Solucionado] « 1 2 »
Scripting
DA KILLER 17 3,895 Último mensaje 19 Mayo 2010, 03:54
por DA KILLER
(Solucionado) [ Batch ] - Problema matemático con variables...
Scripting
EleKtro H@cker 4 545 Último mensaje 11 Noviembre 2011, 20:17
por EleKtro H@cker
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines