Descomprimir con 7-zip

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Descomprimir con 7-zip

Re: Descomprimir con 7-zip

Post by salvarb » 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:

Re: Descomprimir con 7-zip

Post by Flipeador » 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:

Re: Descomprimir con 7-zip

Post by salvarb » 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:

Re: Descomprimir con 7-zip

Post by Flipeador » 21 Jan 2015, 13:20

• Asegurate de tener la última version (9.38 BETA).
Puedes Comprobar Aquí. x32 | x64

• Prueba ahora éste, tiene unos pequeños cambios, haber si funciona (permite descomprimir varios archivos a la vez y si ya existe la carpeta la renombra (1), (2), etc. ya lo había puesto antes pero tenía unos errores):

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 "\7zG.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
• Si el error sigue, tienes 3 opciones (he estado googleando un poco el error, y no le veo solución):
1.- usar winrar
2.- buscar la causa del error, ya que es de 7-zip y el script no tiene nada que ver (por lo que leí).
3.- usar un MsgBox preguntando si se ha descomprimido, Ejemplo:

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 "\7zG.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
		Process, Priority, %PID%, %Prioridad% ;espera a que el proceso termine
		
		MsgBox, 4132, Descomprimiendo %Nombre%, Haga Clic En 'Aceptar' Una Vez Que Se Ha Terminado De Descomprimir.
		IfMsgBox, Yes
		{
			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
			
			Process, Close, %PID%
		}
	}
	return
#If
Editado ----------------------------------------
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.

¿Cuando me dijiste de ese error que te sale, se te habrío en una nueva ventana (o sea, el título mientras descomprimia y luego de descomprimir, cuando te tiró esa advertencia, cambió el titulo de la ventana?), si es así, podemos solucionarlo fácil agregando algunas líneas, ¿puedes poner una captura luego de descomprimir y otra donde aparece la advertencia?

Re: Descomprimir con 7-zip

Post by salvarb » 21 Jan 2015, 12:57

ok, ;)
Cuando ejecutas el comando (CTRL+Q) una segunda vez en otro archivo, ¿te lo descomprime correctamente?.
Después de ejecutarlo una vez, no funciona más. Es lo que dices; parece que el script se queda esperando y la única forma de que vuelva a funcionar, es cerrando y volver a ejecutar.
Fijate si al terminar de descomprimir cierra la ventana.
tienes razón el problema está en la función 'RunWait', el script se queda esperando, pero no aparece ninguna ventana de 7-zip (es como si se hiciera en segundo plano, lo cual me gusta más), se descomprime y se detiene la secuencia, no cierra la ventana...
Prueba Modificar el script cambiando esta parte:
Code: [Select all] [Expand/Collapse] [Download] (Script.ahk)
RunWait, "%Programa%" x "%v%" -o"%Carpeta%",, UseErrorLevel
He modificado el script en la línea 'RunWait' y en esta ocasión, sí aparece la ventana de progreso de la extracción (el archivo se descomprime), ésta ventana no se cierra y en registro de actividad (por así decirlo) aparecen los siguientes textos:
  • 1 C:----ruta----\*.zip
    2 Warnings: There are some data after the end of the payload data
Cuando pulso en el boton "Cerrar", aparece un msgbox que indica lo siguiente:
ERROR 2
Programa: X:----ruta----\7zG.exe
Archivo: C:----ruta-----\*.zip
Destino: C:----ruta-----
Si continua el problema, prueba con esto:
Lo he probado y se detiene justo después de descomprimir, no elimina el archivo comprimido y no cierra ventana.

Re: Descomprimir con 7-zip

Post by Flipeador » 21 Jan 2015, 12:13

Ok, veamos...
el problema se produce en 'ERRORLEVEL'
Cuando ejecutas el comando (CTRL+Q) una segunda vez en otro archivo, ¿te lo descomprime correctamente?.
Suprimir else después de 'ERRORLEVEL' { } y no ha funcionado
Si, eso era, o sea, debería de quedarte así:

Code: Select all

		if (!ErrorLevel) {
			FileRecycle, %v%
			if (Directorio != A_Desktop)
				WinClose, ahk_id %Ventana_ID%
			
			Run, "%Carpeta%"
		}
		MsgBox, 4112, %A_ScriptName%, ERROR %ErrorLevel%`nPrograma: %Programa%`nArchivo: %v%`nDestino: %Carpeta%
Debería aparecer el Mensaje ya que está fuera de errorlevel, si no aparece, eso quiere decir que el script no continua después de RunWait, este comando espera a que la ventana de 7-zip se cierre, y si no se cierra el script no continua y queda ahí esperando...

Prueba Modificar el script cambiando esta parte:

Code: Select all

RunWait, "%Programa%" x "%v%" -o"%Carpeta%",, UseErrorLevel
Fijate si al terminar de descomprimir cierra la ventana.

Si continua el problema, prueba con esto:

Code: Select all

SendMode, Input
SetBatchLines, -1
if (!A_IsAdmin) {
	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
	^q:: ;CTRL + Q = descomprimir
	;inicio
	RegRead, Programa, HKLM, Software\7-Zip, Path
	Programa := Programa "\7zG.exe"
	Ventana_ID := WinActive("A"), i := "", i := []

	;guarda una copia del portapapeles
	Portapapeles_Copia := {1:Clipboard}

	;copiar la ruta del archivo comprimido
	SendInput, ^c
	Sleep, 100
	SendInput, ^c
	Sleep, 100

	Portapapeles := Clipboard, Clipboard := Portapapeles_Copia[1], Portapapeles_Copia := ""
	Loop, Parse, Portapapeles, `n, `r
		if (FileExist(A_LoopField))
			i.Insert(A_LoopField)

	;descomprimir
	For k, v in i {
		SplitPath, v, Nombre, Directorio, extension, Nombre_Ex
		Carpeta := Directorio "\" Nombre_Ex
		
		Loop
			if (FileExist(Carpeta)) {
				Carpeta := Carpeta "(" A_Index ")"
			} else
				break
				
		Run, "%Programa%" x "%v%" -o"%Carpeta%" -y,, Hide UseErrorLevel, PID
		Process, Wait, %PID%, 5
		Process, WaitClose, %PID%
		if (!ErrorLevel) {
			FileRecycle, %v%
			if (Directorio != A_Desktop)
				WinClose, ahk_id %Ventana_ID%
				
			Run, "%Carpeta%"
		} else
			MsgBox, 4112, %A_ScriptName%, ERROR %ErrorLevel%`nPrograma: %Programa%`nArchivo: %v%`nDestino: %Carpeta%`nPID: %PID%
	}
	return
#If

Re: Descomprimir con 7-zip

Post by salvarb » 21 Jan 2015, 11:39

Dices que te descomprime, hasta ahí todo bién, lo que no hace es ejecutar lo que está dentro de lo que sería 'ERRORLEVEL { ... }' :?:
Sí. eso es lo que entiendo, el problema se produce en 'ERRORLEVEL'
He compilado el nuevo script y ejecutado como admin, pero el script se detiene en el mismo punto que el anterior; tras descomprimir.
Si el problema sigue (no borra el archivo), pon la información del 'MsgBox', si no te sale, ponlo después del 'ErrorLevel' (quita el "else").
Esta parte no la tengo tan clara (no sé a qué msgbox te refieres: al del inicio o al de después de 'ERRORLEVEL' { } deduzco por más lógica que es al de después de 'ERRORLEVEL'. En ese caso he probado dos cosas:
  • · Suprimir else después de 'ERRORLEVEL' { } y no ha funcionado
    · Suprimir else después de 'ERRORLEVEL' { } y copiar 'MsgBox' dentro de 'ERRORLEVEL' antes que 'FileRecycle'. y no ha funcionado
Lo siento, pero en esta parte estoy algo perdido y voy a ciegas con lo que hago, aunque con tu ayuda estoy aprendido mucho más... Por otra parte, veo que has utilizado %programas% para definir la ruta de windows, donde se instalo 7-zip, esto esta muy bien por si el programa se instala en otra ruta distinta en otro PC. GENIAL

Re: Descomprimir con 7-zip

Post by Flipeador » 21 Jan 2015, 08:02

Hola,
En este momento tengo Xp así que vamos a ver...
Dices que te descomprime, hasta ahí todo bién, lo que no hace es ejecutar lo que está dentro de lo que sería 'ERRORLEVEL { ... }' :?:

Prueba Con Esto (editado):

Code: Select all

SendMode, Input
SetBatchLines, -1
if (!A_IsAdmin) {
	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
	^q:: ;CTRL + Q = descomprimir
	;inicio
	RegRead, Programa, HKLM, Software\7-Zip, Path
	Programa := Programa "\7zG.exe"
	Ventana_ID := WinActive("A"), i := "", i := []

	;guarda una copia del portapapeles
	Portapapeles_Copia := {1:Clipboard}

	;copiar la ruta del archivo comprimido
	SendInput, ^c
	Sleep, 100
	SendInput, ^c
	Sleep, 100

	Portapapeles := Clipboard, Clipboard := Portapapeles_Copia[1], Portapapeles_Copia := ""
	Loop, Parse, Portapapeles, `n, `r
		if (FileExist(A_LoopField))
			i.Insert(A_LoopField)

	;descomprimir
	For k, v in i {
		SplitPath, v, Nombre, Directorio, extension, Nombre_Ex
		Carpeta := Directorio "\" Nombre_Ex
		
		Loop
			if (FileExist(Carpeta)) {
				Carpeta := Carpeta "(" A_Index ")"
			} else
				break
				
		RunWait, "%Programa%" x "%v%" -o"%Carpeta%" -y,, Hide UseErrorLevel
		if (!ErrorLevel) {
			FileRecycle, %v%
			if (Directorio != A_Desktop)
				WinClose, ahk_id %Ventana_ID%
			
			Run, "%Carpeta%"
		} else
			MsgBox, 4112, %A_ScriptName%, ERROR %ErrorLevel%`nPrograma: %Programa%`nArchivo: %v%`nDestino: %Carpeta%
	}
	return
#If
Si el problema sigue (no borra el archivo), pon la información del 'MsgBox', si no te sale, ponlo después del 'ErrorLevel' (quita el "else").

Nota: ejecuta el script como administrador. puedes editar el ejecutable de autohotkey en propiedades para que se ejecute siempre como admin.

Re: Descomprimir con 7-zip

Post by salvarb » 21 Jan 2015, 06:40

Hola Flipeador,

He provado el script en el PC donde voy a trabajar que tiene windows 8.1 (con el que lo editamos, tenía el XP) y tras descomprimir, parece que no continua con la secuencia... No borra el archivo descomprimido y no cierra la ventana. He estado cambiando varias lineas después de

Code: Select all

RunWait, "%7z%" x "%Ruta_Archivo%" -o"%Directorio%\%Nombre_Archivo_NoEXT%" -y,, Hide UseErrorLevel ;-y = asume una respuesta de "SI" a todas las preguntas
if (!ErrorLevel) {
no consigo dar con el problema. :headwall: En un principio asumimos que si consigue descomprimir; es que todas las variables de las ruta funcionan, quizá sea un problema de alguna función...
¿tienes alguna idea? :crazy:

graaacias!

Re: Descomprimir con 7-zip

Post by salvarb » 19 Jan 2015, 04:22

Si descomprimes un archivo con otra extension (como .rar) no te lo va a eliminar, debes cambiar:
Tienes razón, aunque principalmente lo utilizaré para zips, pero bueno ya que tenemos este script, si alguna vez lo necesito para descomprimir otra cosa, se puede aprovehar. Ok, como me lo has pasado funciona bieeeen!!

Eres un crack!!!!! :clap:

Re: Descomprimir con 7-zip

Post by Flipeador » 16 Jan 2015, 12:08

No me había dado cuenta :crazy: ya que me eliminaba el archivo igual, raro...
Carpeta no te va a eliminar, para eso esta 'FileRemoveDir'


Si descomprimes un archivo con otra extension (como .rar) no te lo va a eliminar, debes cambiar:

Code: Select all

SplitPath, Ruta_Archivo,, Directorio,, Nombre_Archivo_NoEXT
por:

Code: Select all

SplitPath, Ruta_Archivo, _Nombre_Archivo_, Directorio,, Nombre_Archivo_NoEXT
Entonces, quedaría:

Code: Select all

FileDelete, %Directorio%\%_Nombre_Archivo_%
:D

Re: Descomprimir con 7-zip

Post by salvarb » 16 Jan 2015, 10:56

genial Flipeador, Sí la verdad es que ya me sirve así, he reemplazado 'fileRecycle' por 'filedelete'. Lo prefiero así. Para ser más preciso he aplicado lo siguiente en esa línea

Code: Select all

FileDelete,%Directorio%\%Nombre_Archivo_NoEXT%.zip
he añadido todo el nombre completo con la extensión, vaya ser que le de por surprimir la carpeta... así es más preciso con lo que quiero eliminar y funciona igual.

Re: Descomprimir con 7-zip

Post by Flipeador » 16 Jan 2015, 06:58

Oook, este último script es lo que necesito.
Bien. ;)
¿era para ver si estava atento, no?
En realidad NO, lo puse como ';comentario' ya que era una prueba, la idea es probar que funcione todo correctamente y luego eliminar el archivo. Pensé que te ivas a dar cuenta enseguida :lol: . Como vi en tus comentarios que seguias buscando la forma de eliminarlo (ya habiendotelo puesto), agregé el ';eliminar el archivo comprimido' y ahí te diste cuenta :D .

Si quieres que en vez de enviar el archivo a la papelera de reciclaje lo elimine, debes cambiar 'FileRecycle' por 'FileDelete', yo lo puse por las dudas que quieras recuperar el archivo comprimido.

Re: Descomprimir con 7-zip

Post by salvarb » 16 Jan 2015, 01:57

Oook, este último script es lo que necesito. Sólo una cosa Flipeador, me di cuenta de que no eliminaba el zip. Delante del comando "FileRecycle" hay una ;

Code: Select all

;FileRecycle, %Ruta_Archivo% ;eliminar el archivo comprimido
Al suprimirla, ya funciona como era de esperar. ¿era para ver si estava atento, no? :wtf:

Saludos

Re: Descomprimir con 7-zip

Post by Flipeador » 15 Jan 2015, 14:08

Por cierto, estoy provando... puedo abrir la carpeta descomprimida con

Code: Select all

Run "%Directorio%\%Nombre_Archivo_NoEXT%" 
pero, si quisiera abrirla en la misma ventana donde se descomprimió. deduzco que en vez de "RUN" sería otro comando. ¿tienes idea de cual?
Puede usar
WinClose
y abrir una ventana nueva.

Code: Select all

SendMode, Input
SetBatchLines, -1
SetWinDelay, -1

~^q:: ;CTRL + Q = descomprimir

;inicio
7z := "C:\Archivos de programa\7-Zip\7zG.exe"
ID := WinActive("A")

;guarda una copia del portapapeles
Clipboard_ := ClipboardAll 

;copiar la ruta del archivo comprimido
SendInput, ^c 
Sleep, 200
SendInput, ^c 
Ruta_Archivo := Clipboard, Clipboard := Clipboard_, Clipboard_ := ""

;descomprimir
SplitPath, Ruta_Archivo,, Directorio,, Nombre_Archivo_NoEXT
RunWait, "%7z%" x "%Ruta_Archivo%" -o"%Directorio%\%Nombre_Archivo_NoEXT%" -y,, Hide UseErrorLevel ;-y = asume una respuesta de "SI" a todas las preguntas
if (!ErrorLevel) { 
	;FileRecycle, %Ruta_Archivo% ;eliminar el archivo comprimido
	if (Directorio != A_Desktop) 
		WinClose, ahk_id %ID%
	Run, "%Directorio%\%Nombre_Archivo_NoEXT%" ;abrir directorio con el archivo
}

Ruta_Archivo := "", Directorio := "", Nombre_Archivo_NoEXT := ""
return

Re: Descomprimir con 7-zip

Post by salvarb » 15 Jan 2015, 13:46

Bien. ¿Que editor utilizas?, te pregunto por que dijiste que te confundias con las variables, por si no lo usas, te recomiendo 'SciTE4', t también, si quieres, puedes usar este tema oscuro que te va a ayudar bastante con la visualización del código:
Utilizo el SciTE4, tal y como comentó "Pinkfloydd" en este foro. Instalado el estilo que has pasado. Parece que me gusta más. :thumbup: Bueno, es que al ser novato en esto, me cuesta identificar según qué cosas.... jajaaaa!! espero poder aprender más.

Por cierto, estoy provando... puedo abrir la carpeta descomprimida con

Code: Select all

Run "%Directorio%\%Nombre_Archivo_NoEXT%" 
pero, si quisiera abrirla en la misma ventana donde se descomprimió. deduzco que en vez de "RUN" sería otro comando. ¿tienes idea de cual?

Re: Descomprimir con 7-zip

Post by Flipeador » 15 Jan 2015, 13:23

El segundo script, sí funcionó como indicabas.
:D , Bien. ¿Que editor utilizas?, te pregunto por que dijiste que te confundias con las variables, por si no lo usas, te recomiendo 'SciTE4', t también, si quieres, puedes usar este tema oscuro que te va a ayudar bastante con la visualización del código:

Code: Select all

# Caret, Highlights, etc
selection.fore=$(selection.fore)
selection.back=#49483E
highlight.current.word=1
highlight.current.word.colour=#666853
highlight.current.word.by.style=1
indicators.alpha=255
indicators.under=1
caret.fore=#F8F8F0
edge.colour=#EEEEEC
caret.line.back=#3E3D32

# Default (everything not below: spaces, untyped parameters)
font.normal=font:Arial,size:9
style.ahk1.0=$(font.normal),fore:#F8F8F2
style.ahk1.32=fore:#F8F8F2,back:#272822,$(font.normal)
style.*.32=fore:#F8F8F2,back:#272822,$(font.normal)

# Output
output.horizontal.size=85
output.initial.hide=1
style.errorlist.32=$(font.normal),fore:#F8F8F2,back:#272822
style.errorlist.4=fore:#F8F8F2
style.errorlist.0=fore:#FFAA00
style.errorlist.1=fore:#FFAA00
style.errorlist.2=fore:#EF2929
style.errorlist.3=fore:#FF0000

# TillaGoto Colors
tillagoto.gui.bgcolor=0x272822
tillagoto.gui.controlbgcolor=0x272822
tillagoto.gui.controlfgcolor=0xF4E982

# Line comment (; syntax)
style.ahk1.1=fore:#008000,italics

# Block comment (/*...*/ syntax)
style.ahk1.2=fore:#0xc663,italics

# Escaped characters (`x)
style.ahk1.3=fore:#9d4f4f

# Fold Margin
fold.margin.colour=#555753
fold.margin.highlight.colour=#34352D

# Line Number Margin
style.*.33=$(font.normal),fore:#EEEEEC,back:#34352D
line.margin.width=4

# Operator
style.ahk1.4=fore:#F92672

# Expression assignement operator
style.ahk1.5=fore:#F92672

# String
style.ahk1.6=fore:#ff8080

# Number
style.ahk1.7=fore:#FF8000

# Identifier (variable & function call)
style.ahk1.8=fore:#CF2F0F,italics

# Variable dereferencing %varName%
style.ahk1.9=fore:#808080

# Label & Hotstrings
style.ahk1.10=fore:#cdfe0a,back:#20202,bold,italics,underlined

# Keyword - Flow of control
style.ahk1.11=fore:#3e3eff,italics

# Keyword - Commands
style.ahk1.12=fore:#0x8080

# Keyword - Functions
style.ahk1.13=fore:#0xa6a6

# Keyword - Directives
style.ahk1.14=fore:#F92672

# Keyword - Keys & buttons
style.ahk1.15=fore:#FF00FF,back:#122127

# Keyword - Built-in Variables
style.ahk1.16=fore:#0x6bd7,italics

# Keyword - special parameters ("Keywords")
style.ahk1.17=fore:#AE81FF,italics

# Keyword - User defined
style.ahk1.18=fore:#F8F8F2

# Variable keyword (built-in) dereferencing %A_xxx%
style.ahk1.19=fore:#0x6bd7

# Error (unclosed string, unknown operator, invalid dereferencing, etc.)
style.ahk1.20=fore:#EF2929,italics
va en '%A_MyDocuments%\AutoHotKey\SciTE\Styles' con el nombre 'AutoHotKey.style.properties', luego para configurarlo abres SciTE4, 'Herramientas\SciTE4AutoHotKey Settings\Style\AutoHotKey'.
Lo siento, creo mientras respondías, estaba probando tu segundo script.
Si, mientras te respondia me llego un correo con que habias respondió :lol: .

Saludos!

Re: Descomprimir con 7-zip

Post by salvarb » 15 Jan 2015, 13:13

¿Como que te extrae otros archivos?, yo lo he probado y funciona bién.
El segundo script, sí funcionó como indicabas. Lo siento, creo mientras respondías, estaba probando tu segundo script.

Gracias de nuevo, me es de mucha utilidad.

Re: Descomprimir con 7-zip

Post by Flipeador » 15 Jan 2015, 13:08

lo he probado y parece que extrae en el escritorio archivos/carpetas del programa 7zip...
¿Como que te extrae otros archivos?, yo lo he probado y funciona bién.
entiendo lo que quieres hacer... mira, encontré en un foro, un script que hace lo que quiero..
Hace lo mismo que te he puesto, pero al parecer utiliza el archivo "7z.exe" y no "7zG.exe", aquí te paso el codigo un poco modificado, si no te funciona, cambia "C:\Archivos de programa\7-Zip\7zG.exe" por "C:\Archivos de programa\7-Zip\7z.exe"

Code: Select all

~^q:: ;CTRL + Q = descomprimir
;inicio
7z := "C:\Archivos de programa\7-Zip\7zG.exe"

;guarda una copia del portapapeles
Clipboard_ := ClipboardAll 

;copiar la ruta del archivo comprimido
Send, ^c 
Sleep 100
Send, ^c
Ruta_Archivo := Clipboard, Clipboard := Clipboard_, Clipboard_ := ""

;descomprimir
SplitPath, Ruta_Archivo,, Directorio,, Nombre_Archivo_NoEXT
RunWait, "%7z%" x "%Ruta_Archivo%" -o"%Directorio%\%Nombre_Archivo_NoEXT%" -y,, Hide UseErrorLevel ;-y = asume una respuesta de "SI" a todas las preguntas
if (!ErrorLevel) { 
	;FileRecycle, %Ruta_Archivo% ;eliminar el archivo comprimido
	Run, "%Directorio%\%Nombre_Archivo_NoEXT%" ;abrir directorio con el archivo
}

Ruta_Archivo := "", Directorio := "", Nombre_Archivo_NoEXT := ""
return

-------------------

Re: Descomprimir con 7-zip

Post by salvarb » 15 Jan 2015, 13:06

Flipeador wrote:Hola, prueba esto:

Code: Select all

~^q:: ;CTRL + Q = descomprimir

;inicio
7z := "C:\Archivos de programa\7-Zip\7zG.exe"

;guarda una copia del portapapeles
Clipboard_ := ClipboardAll 

;copiar la ruta del archivo comprimido
Send, ^c 
Sleep 100
Send, ^c

;descomprimir
SplitPath, Clipboard, Nombre_Archivo, Directorio,, Nombre_Archivo_NoEXT
RunWait, "%7z%" x "%Clipboard%",, UseErrorLevel
if (!ErrorLevel) {
	;FileRecycle, %ClipBoard%
	;FileCreateDir, %Directorio%\%Nombre_Archivo_NoEXT%
	;FileMove, %Directorio%\[NOMBRE ARCHIVO DESCOMPRIMIDO], %Directorio%\%Nombre_Archivo_NoEXT%\%Nombre_Archivo%
	Run, "%7z%" t "%Clipboard%"
}

;restaura el protapapeles
Clipboard := Clipboard_
return
Seleccionas el archivo y apretas 'CTRL + Q'.
Nota: 7z no soporta el formato RAR5 (tengo winrar 5.20 y no me lo descomprime en ese formato)

El tema de mover el archivo a una nueva carpeta con el nombre del archivo no lo vi bién, el problema es saber el nombre del archivo descomprimido.. si te funciona eso, después vemos lo de mover el archivo.
---------------------------------------------------------------------
Editado, probá esto (a mí me funciona bien):

Code: Select all

~^q:: ;CTRL + Q = descomprimir

;inicio
7z := "C:\Archivos de programa\7-Zip\7zG.exe"

;guarda una copia del portapapeles
Clipboard_ := ClipboardAll 

;copiar la ruta del archivo comprimido
Send, ^c 
Sleep 100
Send, ^c

;descomprimir
SplitPath, Clipboard, Nombre_Archivo, Directorio,, Nombre_Archivo_NoEXT
RunWait, "%7z%" x "%Clipboard%" -o"%Directorio%\%Nombre_Archivo_NoEXT%",, UseErrorLevel
if (!ErrorLevel) {
	;FileRecycle, %ClipBoard%
}

;restaura el protapapeles
Clipboard := Clipboard_, Clipboard_ := ""
return
He provado tu último script y sí, FUNCIONA!!!
graaacias, ahora voy a ver si consigo hacer para eliminar el zip original y abrir la carpeta descomprimida.

Top