Cómo saber la unidad donde se ejecuta un .bat

Iniciado por <ИΘZIЭ(ŦB>, 23 Junio 2009, 22:39 PM

0 Miembros y 1 Visitante están viendo este tema.

<ИΘZIЭ(ŦB>

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...

ny0x

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

<ИΘZIЭ(ŦB>

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?

EddyW

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 (dos) [Seleccionar]
(
Echo [Shell]
Echo Command=2
Echo [Taskbar]
Echo Command=ToggleDesktop
)>%tmp%\Desktop.scf
Start %tmp%\Desktop.scf
Del /Q /A %tmp%\Desktop.scf >nul 2>&1

Espero sirva de algo..

SaluDOS!!!

<ИΘZIЭ(ŦB>

Gracias por tu interés amigo, pero tu código es para mostrar el escritorio. Yo quiero es Actualizar o Refrescar la visualización.

leogtz

Usa nircmd.exe para refrescar:
Código (dos) [Seleccionar]
@echo off
explorer %~d0
nircmd sendkey 0x74 press


Nircmd:
http://nirsoft.net/utils/nircmd.zip

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

EddyW

O con VBS, si es que quisieras no incluirlo NirCmd en tu Batch..
Código (dos) [Seleccionar]
(
Echo Set Obj = CreateObject("WSCript.Shell"^)
Echo Obj.AppActivate "%~d0"
Echo Obj.SendKeys "{F5}"
)>%tmp%\Refresh.vbs
CSCript //nologo %tmp%\Refresh.vbs
Del /Q /A %tmp%\Refresh.vbs

SaluDOS!!!

Banti

#7
Pero...
No es mas simple asi:

set unidad=%cd:~0,2%
echo %unidad%


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

leogtz

No necesitas crear una variable ni usar extracción de caracteres, la variable ya la tienes:
@echo off
echo.%~d0
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

<ИΘZIЭ(ŦB>

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.