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