Descomprimir con 7-zip

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

User avatar
salvarb
Posts: 15
Joined: 15 Jan 2015, 07:19

Re: Descomprimir con 7-zip

21 Jan 2015, 14:10

También puedes probar cambiar el ejecutable, al inicio del script, "7zG.exe" por "7z.exe".
O buscar si existe alguna opcion en 7z para omitir alertas/errores.
:bravo: :bravo: :bravo: :bravo: :bravo: :bravo:
Flipeador, esa es la clave... he cambiado el ejecutable y ha FUNCIONADO!!!!

También funciona perfectamente, cuando descomprime más de un archivo a la vez con el último script que editaste. Con tu permiso, copio para quien le interese, el script que a mi me funciona en windows 8 ejecutado como administrador, con el ejecutable '\7z.exe'

Code: Select all

;inicio
SendMode, Input
SetBatchLines, -1
#NoEnv
#SingleInstance, Force
Process, Priority,, Realtime
if (!A_IsAdmin) { ;ejecutar script como administrador!
    MsgBox, 4144, , Ejecutar Como Administrador`, %A_UserName%
    ExitApp
}

;grupos
GroupAdd, Explorador, ahk_class Shell_TrayWnd
GroupAdd, Explorador, ahk_class Progman
GroupAdd, Explorador, ahk_class CabinetWClass

#IfWinActive, ahk_group Explorador ;solo funciona en el explorador de windows
    ^q:: ;CTRL + Q = descomprimir
    
    ;variables de configuracion
    RegRead, Programa, HKLM, Software\7-Zip, Path ;ruta (directorio) 7-Zip
    Programa := Programa "\7z.exe" ;ruta (ejecutable) 7-Zip
    Prioridad := "Normal" ;prioridad del proceso de 7-Zip (máximo recomendado: High)
    ;-- otros
    Ventana_ID := WinActive("A"), i := "", i := [] ;ID De La Ventana Activa + Crea El Array "i"
    
    ;copiar la ruta del archivo comprimido
    Portapapeles_Copia := {1:Clipboard} ;guarda una copia del portapapeles
    SendInput, ^c ;CTRL + C
    Sleep, 100 ;espera 100ms
    SendInput, ^c
    Sleep, 100

    ;busca los archivos a descomprimir y los pone en el array "i"
    Portapapeles := Clipboard, Clipboard := Portapapeles_Copia[1], Portapapeles_Copia := ""
    Loop, Parse, Portapapeles, `n, `r ;busca en el portapapeles
        if (FileExist(A_LoopField)) ;si el archivo a descomprimir existe, entonces:
            i.Insert(A_LoopField) ;Array

    ;descomprimir
    For k, v in i {
        SplitPath, v, Nombre, Directorio, extension, Nombre_Ex
        Carpeta := Directorio "\" Nombre_Ex
        
        if (InStr(FileExist(Carpeta), "D")) ;si la carpeta ya existe (D = Carpeta, A = Archivo), entonces:
            Loop ;busca un nombre alternativo
                if (!FileExist(Carpeta "(" A_Index ")")) {
                    Carpeta := Carpeta "(" A_Index ")" ;nuevo nombre
                    break ;parar
                }
                
        Run, "%Programa%" x "%v%" -o"%Carpeta%" -y,, Hide UseErrorLevel, PID
        Process, Wait, %PID%, 5 ;espera a el proceso 7-zip 5s
        if (ErrorLevel) AND (i.MaxIndex() = 1) {
            Process, Priority, %PID%, %Prioridad% ;espera a que el proceso termine
            Process, WaitClose, %PID% ;espera a que el proceso termine
            
            FileRecycle, %v% ;recicla el archivo comprimido
            if (Directorio != A_Desktop) ;si el directorio no es el escritorio, entonces:
                WinClose, ahk_id %Ventana_ID% ;cerrar ventana (directorio/carpeta)
                
            Run, "%Carpeta%" ;abrir directorio nuevo
        }
    }
    return
#If
Gracias de nuevo!!! :thumbup:
User avatar
Flipeador
Posts: 1146
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Descomprimir con 7-zip

21 Jan 2015, 14:27

Tanto quilombo por eso :lol: .
He notado un pequeño detalle, cuando descomprimas varios archivos no va a funcionar correctamente, para solucionarlo cambia esto:

Code: Select all

		if (ErrorLevel) {
			Process, Priority, %PID%, %Prioridad% ;ajusta la prioridad del proceso
			Process, WaitClose, %PID% ;espera a que el proceso termine
			
			FileRecycle, %v% ;recicla el archivo comprimido
			if (Directorio != A_Desktop) ;si el directorio no es el escritorio, entonces:
				WinClose, ahk_id %Ventana_ID% ;cerrar ventana (directorio/carpeta)
			
			if (i.MaxIndex() = k)
				Run, "%Carpeta%" ;abrir directorio nuevo
		}

Saludos! :bravo:
User avatar
salvarb
Posts: 15
Joined: 15 Jan 2015, 07:19

Re: Descomprimir con 7-zip

21 Jan 2015, 14:51

Tanto quilombo a mi me ha servido para aprender un poco más AHK, jajaaaa! :)
He notado un pequeño detalle, cuando descomprimas varios archivos no va a funcionar correctamente, para solucionarlo cambia esto:
Ok, ya lo he reemplezado y ahora finaliza todo el proceso y se puede ejecutar de nuevo.

PERFECTO!!!
SALUDOS :thumbup:

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 14 guests