Desafortunadamente, el método del programa por lotes de afrazier no funcionará; Windows no maneja abrir múltiples archivos así. Cuando intenta abrir varios archivos con un programa, Windows no abre una sola instancia del programa y pasa los archivos como argumentos múltiples a esa instancia. En cambio, Windows abre muchas instancias del programa (tantas instancias como archivos), pasando un archivo a cada instancia. Sería bueno si pudieras usar% * y pasar un montón de archivos a un solo .bat, y hacer que ese .bat ejecute un bucle procesando cada archivo de uno en uno, pero desafortunadamente solo puedes usar% 1 al configurar estos tipos de acciones en el registro.
Alguien con algo de tiempo en sus manos podría escribir un programa que use un objeto mutex para verificar si ya hay otra instancia ejecutándose, y si la hay, para pasar su archivo a esa instancia y luego cerrar, donde la instancia original colocará ese archivo en una cola y llegar a ella una vez que haya terminado de procesar su propio archivo. un lote podría hacer el truco usando , tasklist
y find
también, pero esa no es una solución tan buena como mutex.
De todos modos, intente esto para su valor de registro de comando de extracción para obtener el nombre de carpeta correcto:
"\path\to\7z.exe" x "%1" -o* -aou
Esto creará una nueva carpeta en el mismo directorio que el archivo fuente con el mismo nombre que el archivo fuente (sin la extensión del archivo).
Además, agregué el -aou
interruptor para evitar automáticamente conflictos de nombre de archivo (7z agregará un número al final de un archivo en lugar de preguntarle si desea sobrescribir o lo que sea).
-o*
hace, pero solo si hay más de un archivo en el archivo? Como en, ¿puedo hacer que se extraiga al directorio actual si solo hay un archivo o carpeta en el archivo?"C:\Program Files\7-Zip\7zFM.exe" x "%1" -o* -aou
cambiar el 7zFM a solo 7z"C:\Program Files\7-Zip\7z.exe" x "%1" -o* -aou
Este hilo se ha vuelto un poco confuso debido a respuestas contradictorias (me tomó bastante tiempo descubrir cuál era la solución correcta), así que pensé que podría ser una buena idea resumir los resultados de las publicaciones de Afrazier y Justin Roettger combinadas con las mías. experiencias:
HKEY_CLASSES_ROOT\7-Zip.7z
Shell
subclave(Default)
valor de la cadenaextract
extract
(Default)
valor de laextract
clave enExtract to Folder
extract
namedcommand
(Default)
valor de lacommand
clave en:(puede que tenga que ajustar esto para que coincida con la ruta de su instalación de 7-Zip)
En lugar de 7z con -aou, como Justin Roettger sugirió que terminé usando 7zG, porque de esta manera puede elegir sobrescribir si lo desea, al igual que extraer con el menú contextual normal.
¡Eso es! Los archivos 7z ahora se extraen a una carpeta con su propio nombre haciendo doble clic. Para otras extensiones como .rar y .zip, debe repetir estos pasos para las teclas correspondientes. (es decir, HKEY_CLASSES_ROOT \ 7-Zip.rar y HKEY_CLASSES_ROOT \ 7-Zip.zip, etc.)
Ah, y para aclarar: también funciona con múltiples archivos seleccionados. No se necesita archivo por lotes.
fuente
C:\Program Files\7-Zip\7zG.exe x "%1" -o*
y listo.Tools -> Options...
menú).La manera fácil
Instale ExtractNow . Puede configurarlo para que haga exactamente lo que quiere.
El camino difícil
Modificación manual del registro de la siguiente manera ...
Comience
regedit
como administradorAbre
HKCR\.7z
y mira el(Default)
valor. Tome nota de lo que es eso (en mi caso, como usuario de PowerArchiver, esPASZIP
)Vaya a la clave de registro en
HKCR
nombre de eso. (en mi casoHKCR\PASZIP
)Debajo de esa tecla, expanda la
Shell
subclaveEstablecer el
(Default)
valor de la cadenaextract
Crear una nueva subclave llamada
extract
Establezca el
(Default)
valor de laextract
clave enExtract to Folder
Cree una nueva subclave debajo de
extract
namedcommand
Establezca el
(Default)
valor de lacommand
clave en(puede que tenga que ajustar la ruta)
Gracias a Justin Roettger por señalar la variable de nombre correcta necesaria para esto.
Eso debería ser. Ahora los archivos 7z se extraen a una carpeta con su propio nombre haciendo doble clic. Para otras extensiones como .rar y .zip, debe repetir estos pasos para las teclas correspondientes.
Si solo desea realizar los cambios en su cuenta de usuario en lugar de en todo el sistema, modifique en
HKCU\Software\Classes
lugar deHKCR
.HKCR
es una clave virtual que es una uniónHKLM\Software\Classes
yHKCU\Software\Classes
donde los datos en su cuenta (HKCU) anulan los datos de todo el sistema (HKLM). Normalmente, ejecutar regedit como administrador significa que modificar HKCR altera los datos de todo el sistema en HKLM.Extrayendo múltiples archivos
Por supuesto, esto no funcionará si tiene múltiples archivos seleccionados. Si desea que eso funcione, debe crear el siguiente archivo por lotes:
Ahora, siga las instrucciones anteriores. En el último paso, establezca el
(Default)
valor de lacommand
clave enC:\Path\To\File.bat %*
Todas las modificaciones del registro no se prueban desde la memoria, pero deben ser correctas.
fuente
%~dpn1
Funciona en asociaciones de archivos? (No lo hace en Windows XP. Además, se olvidóx
de la extensión)x
en el nombre de la carpeta de salida. En cuanto a que funcione ... Esa es una buena pregunta. Voy a editar a la dirección ..."C:\Program Files\7-Zip\7z.exe" x "%1" -o"%~dpn1"
que no obtenía ningún beneficio de ejecucióncmd.exe
que pudiera decir, y la apertura predeterminada de 7-zip no se molestó con eso. Sin embargo, esto solo se está descomprimiendo%~dpn1
en la misma carpeta que el archivo zip. El\"%1.d\"
da un subdirectorio \ filename.zip.d \ en la misma carpeta que el archivo zip, por lo que está más cerca, pero no elimina la extensión. He probado los híbridos de los dos, no tuve suerte. ¿Cualquier otra sugerencia?Aquí está el script de PowerShell que escribí basado en la respuesta de @ haiggoh. Antes de ejecutarlo, debe abrir 7-zip, ir a Herramientas-> Opciones y asociar 7-zip con las extensiones de archivo deseadas. Después de eso, ejecute el siguiente script de PowerShell (con derechos de administrador):
Por supuesto, asegúrese de que la
$7zInstallationFolder
variable contenga la ruta correcta a su instalación de 7-zip.fuente
Pase parámetros como este:
Recuerdo haber escuchado quejas sobre Windows 7 que no permiten editar directamente acciones de archivos. No sé si esto es cierto o no ... pero si es así, guarde lo siguiente como un
*.reg
archivo e impórtelo.fuente
Aquí hay un archivo .reg que configura Extraer a la carpeta como el comportamiento predeterminado al hacer doble clic en los archivos con una de las siguientes extensiones: 7z / CAB / GZ / GZIP / RAR / TAR / ZIP. Puede hacerlo para otras extensiones de archivo con el mismo enfoque. Prefiero el comportamiento predeterminado de Windows para el montaje ISO / VHD, por lo que no cambié eso, y 7-Zip admite muchos otros tipos de archivos que no encuentro comúnmente, por lo que no lo cambié por esos.
Puede revertir esto yendo al Administrador de archivos 7-Zip, Herramientas, Opciones, y cambie las asociaciones de archivos según lo desee.
Probé en Windows 10 x64 / 7-Zip 15.12 x64. Debido a que usa C: \ Archivos de programa para la ruta a 7-Zip, definitivamente necesitas x64 Windows + x64 7-Zip, pero solo probé en Windows 10.
Tendrá las mismas opciones de clic con el botón derecho que antes, esto solo cambia lo que sucede cuando hace doble clic, y solo para esos siete tipos de archivos (nuevamente, puede hacer esto para otros tipos de archivos con el mismo enfoque).
Si ya hay una carpeta con ese nombre, le dará el mismo aviso de 7-Zip que obtiene normalmente, con opciones para Sí / Sí a Todos / Renombrar automáticamente / No / No a Todos.
fuente