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.
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:
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!?