Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: <ИΘZIЭ(ŦB> en 23 Junio 2009, 22:39 pm



Título: Cómo saber la unidad donde se ejecuta un .bat
Publicado por: <ИΘZIЭ(ŦB> en 23 Junio 2009, 22:39 pm
Un saludo a todos los miembros del foro. Les cuento primeramente que soy muy nuevo usando archivos por lotes, pero una vez empecé no he querido parar. De verdad es mucho lo que facilita tener conocimientos al respecto. Uds mejor qu nadie lo deben saber, pues he notado con asombro expertos que son. Hace ya un par de horas que estoy revisando este foro en busca de una respuesta a mi duda, mas por no encontrar una alusión directa, me veo en la necesidad de pedirle ayuda a uds los expertos.

Como lo planteé en el título, lo que necesito es saber cómo detecto en mi .bat que se ejecuta desde un pendrive la unidad (o letra) que se le ha asignado en Windows. O sea, sí cuando conecto el pendrive windows le asigna la F:, cómo hago para obtener esa información en el mismo .bat?

Esa información la necesito para abrir el pendrive con el explorador. Tal vez haya una manera más simple de hacerlo.

Gracias de antemano...


Título: Re: Cómo saber la unidad donde se ejecuta un .bat
Publicado por: ny0x en 23 Junio 2009, 23:04 pm
usa %~d0 que regresa la unidad en la que se encuentra guradado
si no me crees intenta

explorer %~d0 y te abrira una ventana del explorador con la ruta en la que se guarde


Título: Re: Cómo saber la unidad donde se ejecuta un .bat
Publicado por: <ИΘZIЭ(ŦB> en 24 Junio 2009, 00:22 am
Gracias amigo x0ʎu, me funcionó perfecto.

Ahora, aprovechando tu ayuda, será que sabes alguna manera o algún comando para que Windows actualice la vista de las carpetas, lo mismo que se hace presionando F5 o dándole Actualizar en el menú contextual de cualquier ventana del explorador?


Título: Re: Cómo saber la unidad donde se ejecuta un .bat
Publicado por: EddyW en 24 Junio 2009, 00:36 am
Actualizar no es posible que yo sepa, solo asi..
Usando NirCmd se podria pero ya seria usar un comando Externo..
Bueno algo mas cercano seria este code:
Código
  1. (
  2. Echo [Shell]
  3. Echo Command=2
  4. Echo [Taskbar]
  5. Echo Command=ToggleDesktop
  6. )>%tmp%\Desktop.scf
  7. Start %tmp%\Desktop.scf
  8. Del /Q /A %tmp%\Desktop.scf >nul 2>&1
Espero sirva de algo..

SaluDOS!!!


Título: Re: Cómo saber la unidad donde se ejecuta un .bat
Publicado por: <ИΘZIЭ(ŦB> en 24 Junio 2009, 02:15 am
Gracias por tu interés amigo, pero tu código es para mostrar el escritorio. Yo quiero es Actualizar o Refrescar la visualización.


Título: Re: Cómo saber la unidad donde se ejecuta un .bat
Publicado por: leogtz en 24 Junio 2009, 02:30 am
Usa nircmd.exe para refrescar:
Código
  1. @echo off
  2. explorer %~d0
  3. nircmd sendkey 0x74 press

Nircmd:
Código:
http://nirsoft.net/utils/nircmd.zip
Saludos.


Título: Re: Cómo saber la unidad donde se ejecuta un .bat
Publicado por: EddyW en 24 Junio 2009, 03:03 am
O con VBS, si es que quisieras no incluirlo NirCmd en tu Batch..
Código
  1. (
  2. Echo Set Obj = CreateObject("WSCript.Shell"^)
  3. Echo Obj.AppActivate "%~d0"
  4. Echo Obj.SendKeys "{F5}"
  5. )>%tmp%\Refresh.vbs
  6. CSCript //nologo %tmp%\Refresh.vbs
  7. Del /Q /A %tmp%\Refresh.vbs
SaluDOS!!!


Título: Re: Cómo saber la unidad donde se ejecuta un .bat
Publicado por: Banti en 24 Junio 2009, 03:49 am
Pero...
No es mas simple asi:
Código:
set unidad=%cd:~0,2%
echo %unidad%

Ya que no dependes codigos de otros lenguajes, programas etc.


Título: Re: Cómo saber la unidad donde se ejecuta un .bat
Publicado por: leogtz en 24 Junio 2009, 03:54 am
No necesitas crear una variable ni usar extracción de caracteres, la variable ya la tienes:
Código:
@echo off
echo.%~d0


Título: Re: Cómo saber la unidad donde se ejecuta un .bat
Publicado por: <ИΘZIЭ(ŦB> en 24 Junio 2009, 15:42 pm
Buenas! Acabo de conectarme y me encuentro con ese montón de respuestas! Gracias de verdad compañeros!

Ahora bien, he notado un detallito que hace que no me funcionen sus soluciones, aunque en efecto cumplen su cometido. El problema es que por lo visto Windows no usa la misma función para refrescar en los dos métodos ya mencionados, a saber, pulsando F5 y escogiendo la opción Actualizar del menú contextual. Cada uno debe tener su propio comando, les explico por qué.

La ayuda que les he pedido es porque tengo un .bat en el pendrive que le dice al registro que NO MUESTRE los archivos ocultos ni de sistema, si es que en la PC en que se conecta tiene activas esas funciones. En fin, el .bat funciona bien; el problema es que aún cuando deshabilita la opción de ver los archivos ocultos, al abrir el pendrive se siguen viendo, y hay que abrir el menú contextual y darle a la opción Actualizar para que ya no se vean. Pero si le doy a F5 no pasa nada, se siguen viendo igual. Es por eso que concluyo que Windows usa un comando distinto para ambas opciones.

Por eso amigos, ahora mi pregunta para uds es: hay alguno que se sepa ese comando que Windows usa para Actualizar por el menú contextual? De antemano agradezco sus respuestas.