Autor
|
Tema: ¿Algo que abra una carpeta y además un archivo? (Leído 2,662 veces)
|
Tachikomaia
Desconectado
Mensajes: 1.409
Hackentifiko!
|
Un acceso directo es, según he visto, abrir una cosa o la otra, no ambas.
Se puede abrir una carpeta, que el archivo esté dentro o un acceso directo a él y entonces abrirlo, pero quiero que se abran ambas cosas con un par de clics.
¿Es posible? ¿con un bat, un exe, cómo los hago?
|
|
|
En línea
|
|
|
|
EdePC
|
Puedes editar un acceso directo para que haga lo que quieres, al menos si es tan sencillo como lo que pides: Un acceso directo que abra una carpeta y un archivo dentro de esa carpeta Primero crear un acceso directo a tu carpeta, para mi ejemplo se llamará: Nueva carpeta - Puedes usar cualquier técnica para crear tu acceso directo, supongo que de los más fáciles son darle a copiar la carpeta (click derecho > copiar, o Ctrl + C), luego pegar en el lugar deseado como acceso directo (click derecho > pegar acceso directo) El segundo paso es editar el acceso directo, basta con darle click derecho > Propiedades al acceso directo, ahí hay tres campos importantes para tu caso: 1. Destino: Es lo que tiene que abrir el acceso directo, como quieres que abra una carpeta y un archivo dentro de esa carpeta puedes llamar comandos, una cmd siempre es útil: cmd /c start explorer . & start foto.jpg- Lo que hace lo anterior es abrir una cmd, con /c le dices que al terminar su trabajo se cierro automáticamente - start es un comando que sirve para abrir cosas, en este caso abriremos un explorador de archivos (explorer) que abra la carpeta actual (.): start explorer .- & sirve para ejecutar otro comando luego de ejecutar el primero, el comando a ejecutar es de nuevo un start pero esta vez llamamos a abrir una imagen: & start foto.jpg2. Iniciar en: Aquí va la dirección de la carpeta que se tomará como base, tendrá que ir la ruta de la carpeta para que al intentar hacer start foto.jpg entienda que esa foto está en esa carpeta. Con cmd y explorer no hay problema porque esos programas están en el Path de Windows y están siempre disponibles desde cualquier lugar. Ahora dale a Aceptar y ya está. Nota: Luego de dar aceptar y volver a revisar las propiedades del acceso directo verás que se cambió lo que escribiste en Iniciar en a: C:\Windows\System32\cmd.exe /c start explorer . & start foto.jpg- Es normal porque se está resolviendo la ruta completa de cmd y su extensión, también lo podrías haber puesto completo pero como vez no es necesario y el sistema lo entiende y resuelve. - También es posible que se agregen comillas cuando la ruta o nombres de archivo contienen espacios, esto si que deberías tenerlo en cuenta y manualmente ponerlos para evitar problemas - Ah! y la última cosa es el icono, con darle al botón cambiar icono puedes darle otro pero eso ya es de gustos y oara nada debería afectar la funcionalidad del acceso directo
|
|
|
En línea
|
|
|
|
Tachikomaia
Desconectado
Mensajes: 1.409
Hackentifiko!
|
Tal vez me sirva, pero mi caso es algo así: - Tengo una carpeta Proyectos. - En esa carpeta tengo archivos txt que son diarios sobre los proyectos, por ejemplo Libro.txt y Dibujante completo.txt. - También tengo carpetas Libro, Dibujante completo, etc, que tienen archivos de los proyectos. Podría poner cada diario dentro de su respectiva carpeta pero me queda más cómodo así. Bueno, voy a ponerlos dentro, mejor, es que antes tená un único diario para todos y estaba fuera, me acostumbré a eso. A ver entonces qué sale. Funciona pero antes de poner el destino hay que copiar lo que estaba ahí y ponerlo en Iniciar en, o al menos en mi caso eso estaba en blanco y cuando no lo copié no funcionó. Una duda, el txt se abre, sí, pero aunque le puse al acceso directo que se abra maximizado, se abre normal ¿es posible que se abra maximizado? Quizá modificando alguna configuración de otro lado. No sé qué manía tiene de nunca abrirse maximizado aunque siempre lo cierre maximizado, Paint por ejemplo siempre se abre maximizado. Otra: ¿Es posible que abra la carpeta y luego el archivo? Porque, por la razón que sea, lo abre antes, así que debo hacer que la ventana activa vuelva a ser el archivo. La idea es que sea cómodo. Le preguntaré a GPT. Para lograr que al abrir un acceso directo, un archivo batch (`.bat`), un programa u otro tipo de archivo en Windows 7 se abra una carpeta y luego un archivo de texto (`txt`) con la ventana maximizada, puedes seguir estos pasos:
1. **Crear el archivo batch**: - Abre el Bloc de notas y escribe los siguientes comandos: ```batch @echo off start "" "%windir%\explorer.exe" "C:\Ruta\De\La\Carpeta" start "" /max notepad.exe "C:\Ruta\Del\Archivo.txt" ``` - Reemplaza `"C:\Ruta\De\La\Carpeta"` con la ruta de la carpeta que deseas abrir y `"C:\Ruta\Del\Archivo.txt"` con la ruta del archivo de texto que deseas abrir. - Guarda el archivo con una extensión `.bat`, por ejemplo, `abrir_carpeta_y_archivo.bat`.
2. **Crear un acceso directo**: - Haz clic derecho en el escritorio o en la ubicación deseada y elige `Nuevo` > `Acceso directo`. - En la ventana emergente, haz clic en `Examinar` y selecciona el archivo batch que creaste (`abrir_carpeta_y_archivo.bat`). - Haz clic en `Siguiente`, asigna un nombre al acceso directo y finaliza el proceso.
3. **Configurar el acceso directo para abrir maximizado**: - Haz clic derecho en el acceso directo que creaste y elige `Propiedades`. - En la pestaña `Acceso directo`, en el campo `Ejecutar`, elige `Maximizada`. - Haz clic en `Aceptar` para guardar los cambios.
Al hacer doble clic en este acceso directo, se abrirá la carpeta especificada y el archivo de texto en Notepad en modo maximizado. Asegúrate de tener los permisos necesarios para acceder a la carpeta y al archivo. Si deseas que todos los archivos de texto (`*.txt`) se abran maximizados por defecto al hacer doble clic en ellos, puedes hacer uso del Registro de Windows para ajustar esta configuración de forma global. A continuación, te guiaré a través de los pasos para lograr esto en Windows 7:
**Nota importante: Antes de modificar el Registro de Windows, te recomiendo encarecidamente que hagas una copia de seguridad del Registro o de tu sistema. Modificar incorrectamente el Registro puede causar problemas graves en el sistema operativo.**
1. **Abrir el Editor del Registro**: - Presiona `Win + R` para abrir el cuadro de diálogo "Ejecutar". - Escribe `regedit` y presiona Enter para abrir el Editor del Registro.
2. **Navegar hasta la clave del Registro correcta**: - Ve a la siguiente ubicación en el Editor del Registro: ``` HKEY_CLASSES_ROOT\txtfile\shell\open\command ```
3. **Modificar la entrada del Registro**: - Haz clic derecho en la entrada `Default` en el panel derecho y elige `Modificar`. - En el campo `Información del valor`, agrega `/max` al final del valor existente. Por ejemplo, si el valor es `"\"%1\""`, cámbialo a `"\"%1\" /max"`.
4. **Confirmar los cambios**: - Haz clic en `Aceptar` para guardar los cambios en el Registro.
Una vez que hayas realizado estos cambios, todos los archivos de texto (`*.txt`) deberían abrirse maximizados por defecto al hacer doble clic en ellos.
Por favor, ten en cuenta que modificar el Registro de Windows es una tarea avanzada y puede tener consecuencias no deseadas si no se realiza correctamente. Si no te sientes cómodo realizando estos cambios por tu cuenta, te sugiero que busques asistencia de alguien con experiencia en la modificación del Registro de Windows. Veremos, veremos...
|
|
« Última modificación: 14 Agosto 2024, 03:55 am por Tachikomaia »
|
En línea
|
|
|
|
Tachikomaia
Desconectado
Mensajes: 1.409
Hackentifiko!
|
GPT me dijo esto: Sí, es posible realizar esta tarea también usando un archivo por lotes `.bat` en lugar de PowerShell. Puedes lograrlo utilizando un enfoque que implica verificar si la ventana de la carpeta está abierta mediante un script `.vbs` que luego es llamado desde el archivo por lotes `.bat`. Aquí te muestro cómo hacerlo:
1. Crea un archivo de script `.vbs` (por ejemplo, `CheckFolder.vbs`) con el siguiente contenido:
```vbscript Set objShell = CreateObject("Shell.Application") For Each wnd In objShell.Windows If InStr(wnd.LocationURL, "file:///UBICACIÓN DE LA CARPETA") > 0 Then WScript.Quit(0) End If Next
WScript.Quit(1) ```
2. Luego, en tu archivo por lotes `.bat`, puedes llamar al script `.vbs` para verificar si la carpeta está abierta antes de abrir el archivo de texto. Aquí está cómo podrías modificar tu script `.bat`:
```batch @echo off start "" "%windir%\explorer.exe" "UBICACIÓN DE LA CARPETA"
:LOOP cscript //nologo CheckFolder.vbs if %errorlevel% equ 0 ( timeout /t 1 /nobreak >nul goto :LOOP )
start "" /max "notepad.exe" "UBICACIÓN DEL ARCHIVO" ```
En este script, después de abrir la carpeta, se ejecuta un bucle que verifica continuamente si la carpeta está abierta usando el script `.vbs`. Una vez que la carpeta está abierta, se espera un segundo y luego se abre el archivo de texto. Este método es una forma de verificar si la ventana de la carpeta está abierta. ¿Está bien? El código me suena un poco a chino. Me había dicho uno en powershell pero no sé ni qué es. Le pedí explicaciones de todo, es un poco largo así que no lo pego. Lo pruebo. Lo de modificar el registro, que me dijo antes, por ahora no lo probaré. ... No sirve, el archivo se abre antes que la carpeta. Le dije y me respondió: El problema que estás experimentando se debe a que el script VBS y el script de batch (BAT) no están coordinados correctamente para verificar si la carpeta está abierta antes de abrir el archivo.
Para lograr lo que deseas (abrir un archivo solo después de que la carpeta esté abierta), necesitas ajustar el script VBS y el script de batch. Asegúrate de que el script VBS esté verificando que la carpeta está abierta antes de que el script de batch abra el archivo.
Aquí hay una posible solución corregida:
### Script VBS (`CheckFolder.vbs`): ```vbs Set objShell = CreateObject("Shell.Application") For Each wnd In objShell.Windows If InStr(wnd.LocationURL, "file:///CARPETA") > 0 Then WScript.Quit(0) End If Next
WScript.Quit(1) ```
### Script de Batch (`OpenFolderAndFile.bat`): ```batch @echo off start "" "%windir%\explorer.exe" "CARPETA"
:LOOP cscript //nologo CheckFolder.vbs if %errorlevel% equ 0 ( timeout /t 1 /nobreak >nul ) else ( goto :OPENFILE ) goto :LOOP
:OPENFILE start "" /max "notepad.exe" "ARCHIVO" ```
### Explicación: 1. El script VBS ahora verifica si la carpeta "CARPETA" está abierta correctamente. 2. El script de batch espera en un bucle hasta que la carpeta esté abierta (si la carpeta está abierta, espera 1 segundo y vuelve a verificar). 3. Si la carpeta está abierta, salta a la sección `:OPENFILE` y abre el archivo `ARCHIVO`.
Con estos cambios, el archivo se abrirá solo después de que la carpeta esté abierta. ¡Prueba esto y debería funcionar como esperas! Ahora veo el 1er código y estoy confundido. For Each wnd In objShell.Windows If InStr(wnd.LocationURL, "file:///CARPETA") > 0 Then WScript.Quit(0) End If Next WScript.Quit(1)
Si se encuentra la carpeta abierta, el mensaje es 0, sino 1 ¿no? En el bat dice: :LOOP cscript //nologo CheckFolder.vbs if %errorlevel% equ 0 ( timeout /t 1 /nobreak >nul goto :LOOP ) Se ejecuta el code anterior. Si el mensaje o error es 0... m, supongo que debería cambiarlo a 1, pruebo. Es que poner un else como me dijo ahora me pareció innecesario. Ahora ni abre el archivo. Vamos desde el código anterior. Si el mensaje es 0, es decir si la carpeta se abrió, el código se ejecutará de nuevo ¿cómo es que llegó a terminar entonces? ¿se ejecutan mezclados? Supongamos que la carpeta no se abrió, el mensaje es 1. El loop no se hace, fin. Está mal. Supongo que pasa esto. Pero supongamos que sí se abre, el mensaje es 0. El loop se hace, y es interminable ¿no? Ahora vamos a ver el código cambiando ese 0 por 1, en el bat: Supongamos que la carpeta no se abrió, el mensaje es 1. El loop se hace, así que en algún punto la carpeta debería abrirse y el mensaje ser 0. Si es 0, el programa sigue de largo sin hacer más. ¿Por qué el loop no termina si la carpeta está abierta?
|
|
« Última modificación: 15 Agosto 2024, 05:25 am por Tachikomaia »
|
En línea
|
|
|
|
EdePC
|
Entiendo que quieres:
* Un acceso directo que abra una carpeta y luego un archivo en esa carpeta * El archivo debe estar maximizado y debe tener el foco (debe abrirse después de la carpeta)
Si tienes una carpeta C:\Dibujante completo y dentro el archivo Dibujante completo.txt modifica tu acceso directo así:
Destino: cmd /c start . & timeout /t 0 & start "" /max "Dibujante completo.txt"
Iniciar en: C:\Dibujante completo
- He reemplazado start explorer . por start . porque vi que funciona igual
- He agregado timeout /t 0 que lo que hace es esperar 0 segundos antes de lanzar el siguiente comando, probé con 0 y me funciona, pero si aún te sigue abriendo el bloc de notas antes que la carpeta puedes poner 1 o 2
- Para iniciar una aplicación maximizada mediante start se usa /max, al usar parámetros adicionales para start es bueno colocar las "" (título de ventana vació opcional) para evitar bugs: start "" /max "Dibujante completo.txt"
- Como siempre, se usa & para encadenar comandos y ejecutarlos uno a uno
|
|
|
En línea
|
|
|
|
Tachikomaia
Desconectado
Mensajes: 1.409
Hackentifiko!
|
Bien, funciona, en bat había visto que se podía generar una espera pero como la velocidad de mi PC es tan variable no me pareció buena idea.
|
|
|
En línea
|
|
|
|
Danielㅤ
Conectado
Mensajes: 1.833
🔵🔵🔵🔵🔵🔵🔵
|
Hola compañeros, la forma que utilizó EdePC está bastante bien y es válido además de ser lo más sencillo, pero no es la mejor forma, ya que la manera más correcta es abrir la ventana del explorador de Windows primero y cuándo el mismo Windows detecte que esa ventana está activa, ahí se abriría el archivo después, aunque también se puede abrir el archivo con un timeout, pero primero se tendría que comprobar que la ventana de la carpeta esté abierta y activa.
Obviamente esto que planteo no se puede hacer en batch, habría que hacerlo en PowerShell o Visual Basic.
Saludos
|
|
|
En línea
|
|
|
|
Tachikomaia
Desconectado
Mensajes: 1.409
Hackentifiko!
|
Además me quedé con la duda de cómo sería ahí. Creo que poniendo un loop en el vbs y quit 0 (no el 1) funcionaría: No es 0 hasta que se detecte la carpeta.
El bat, por otro lado, también estaría loopeado hasta que lo otro diga 0.
Pero no sé cómo se interpreta ahí una variable (el mensaje, número, del quit) que aún no ha sido definida. Por ahora no averigué más, de cómo sería eso o cómo crear una variable en vbs y que se pase al bat, si es posible.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿Autorun para que mi USB abra automaticamente la carpeta raiz del USB?
Windows
|
laluchi
|
7
|
7,966
|
17 Mayo 2010, 06:17 am
por laluchi
|
|
|
se puede sniffear algo ademas de pcs?
« 1 2 »
Hacking
|
mrharold
|
12
|
6,725
|
18 Febrero 2014, 01:39 am
por magnum_44
|
|
|
crear .bat que abra varios periles de firefox, verifique ip y abra una web si la
Scripting
|
zepolinotna
|
0
|
2,114
|
22 Abril 2019, 20:28 pm
por zepolinotna
|
|
|
Crear launcher que abra la terminal con algo predeterminado
GNU/Linux
|
Code99
|
1
|
2,709
|
6 Octubre 2019, 10:08 am
por Drakaris
|
|
|
Algo más, Además de Code::Blocks?
Programación C/C++
|
M401
|
1
|
2,518
|
2 Diciembre 2020, 23:19 pm
por K-YreX
|
|