2012-09-22 21 views
5

Tengo un script por lotes en mi escritorio de Windows XP (LaunchWindowsExplorers.bat) que debe iniciar un par de instancias de Windows Explorer.Secuencia de comandos para iniciar varias instancias del Explorador de Windows en la misma ubicación

Parece que este:

LaunchWindowsExplorers.bat:

start explorer "C:\SomeDirectory" 
start explorer "C:\SomeDirectory" 

Al hacer doble clic en el archivo LaunchWindowsExplorers.bat

que se puede esperar para ver

  • dos casos del Explorador de Windows abierto en "C: \ SomeDirectory".

En cambio, veo

  • sólo una ventana de Windows Explorer abierta en "C: \ somedirectory".

¿Qué necesitaría hacer para que este guión abierto dos instancias del Explorador de Windows, cada uno de los cuales abrió en "C: \ somedirectory"?

Gracias.

Respuesta

5

Puede usar explorer /n,"C:\SomeDirectory", explorer /e,"C:\SomeDirectory" o explorer /root,"C:\SomeDirectory" (dependiendo de la vista que desee). Explicación de las opciones tomadas desde aquí: http://support.microsoft.com/kb/314853:

Opción Función


/n Abre una nueva ventana de un solo panel para la selección por defecto . Esta suele ser la raíz de la unidad en la que está instalado Windows . Si la ventana ya está abierta , se abre un duplicado.

/e Abre Windows Explorer en su vista predeterminada.

/root, < objeto> Abre una vista de ventana del objeto especificado.

/select, < objeto> Abre una vista de ventana con la carpeta especificada, archivo, o programa seleccionado.


Lo que es interesante, este comportamiento (que no muestren segunda ventana para el mismo directorio) parece específica a XP. Win7 simplemente inicia una segunda copia del explorador. No he revisado Vista.

+0

Acabo de notar que/n específicamente afirma: "Si la ventana ya está abierta, se abre un duplicado". Eso parece perfecto! –

+0

@MattiasAndersson '/ n,' '/ e,' '/ root,' todas abren ventanas nuevas. He añadido '/ n,' a mi respuesta, ya que resulta que acepta una ruta, incluso si no está documentado como tal. ¡Gracias! – wmz

+0

@wmz Gracias. Si esto funcionó. Prefijo la segunda ruta con '/ n,' lo que aseguró que se creara la segunda instancia. –

1

Aunque no estoy seguro de la solución, ¿ha intentado cambiar a algo así como:
start explorer "C:\SomeDirectory"
start explorer "C:\AnotherDirectory"
y verificado lo que sucede?
Supongo que lo que está sucediendo es que el explorador de inicio tiene una comprobación para ver si ya hay un explorador abierto, y solo abre uno nuevo si eso es falso (de lo contrario, solo redirige el abierto actual).
Lo siento, no podría ser de más ayuda.

+0

Gracias por la respuesta. Sí, funciona bien si desea abrir una variedad de ubicaciones diferentes. Cada uno se abre en una nueva instancia. Simplemente parece evitar dos instancias de la misma ubicación por alguna razón. Por eso hice la pregunta. –

+0

Ah, ya veo. Lo estaba comprobando, porque pensé que podría haber abierto "C: \ SomeDirectory" antes de cambiarlo a "C: \ AnotherDirectory" (dejándolo con solo una ventana del explorador). Hmm ... –

+0

Abrir múltiples ubicaciones diferentes es exactamente lo que necesitaba para mi problema. –

1

Te recomiendo que pruebes la respuesta de wmz antes que la mía. Mi respuesta es un hack terrible y sucio, y solo debe considerarse como último recurso.

Lo que mi script de ejemplo hace es crear una subcarpeta aleatoria de la carpeta que desea abrir, abre eso, luego quita la subcarpeta aleatoria y espera que Explorer se mueva con gracia a la carpeta principal, que es la que realmente quería abierto.

Esto es terrible, terrible, terrible, pero funciona en mi máquina Win7. :) Lamentablemente, no tengo una máquina WinXP/VM alrededor, para probar esto correctamente, y podría fallar por completo si el explorador bloquea la carpeta como en uso porque se muestra; No recuerdo cuando eso fue cambiado. Además, este enfoque requiere acceso de escritura a la carpeta y podría romperse fácilmente por desafortunado tiempo, o un antivirus agresivo, o cualquier otra aleatoriedad. ¿Ya he dicho suficiente sobre lo terrible que es esto? :)

call :ForceStartExplorerWindow . 
call :ForceStartExplorerWindow . 
call :ForceStartExplorerWindow . 

GOTO :EOF 


:: Pass The location to open as %1 
:ForceStartExplorerWindow 

SETLOCAL 

set __ForceStartTempDir=%1\ThisShouldNeverExist-%RANDOM% 
md %__ForceStartTempDir% 
start explorer %__ForceStartTempDir% 

:: Hope this wait is long enough for Explorer to finish loading it... 
ping -n 2 localhost >NUL 

:: Hope this rd works... 
rd %__ForceStartTempDir% 
:: FUTURE: Consider retrying upon failure. 

:: End of ForceStartExplorerWindow 
GOTO :EOF 
+0

Gracias por la respuesta. Decir ah. Me encanta el pensamiento lateral. Pero, como sugieres, probablemente intente primero con la respuesta de wmz. –

+0

@JW: :-) Me alegro de que haya podido resolver el problema correctamente. –

Cuestiones relacionadas