Page 1 sur 1
[..] Gzip + équivalent replace DOS
Posté : mar. 26 août 2008 11:29
par nicoautoit
Salut,
je travail encore avec une veille version d'autoit v2.64
je veux compresser un fichier avant de le copier si c'est la dernière version.
je le fais en Dos avec le outils gzip et replace, y a t il des équivalent avec Autoit ??
(la commande replace dans Dos copie le fichier le plus récent)
pour gzip j'ai essayé
mais ça ne marche pas.
le "-1f" étant les options de gzip
Je ne veux pas que l'on puisse voir le contenu du .bat en Dos, je veux un fichier .exe
Merci par avance pour vos réponses
Re: [..] Gzip + équivalent replace DOS
Posté : mar. 26 août 2008 11:51
par jbnh
Si j'ai bien compris tu veux créer ton fichier zip avec autoit?
Re: [..] Gzip + équivalent replace DOS
Posté : mar. 26 août 2008 11:53
par nicoautoit
eh bien en dos j'utilise gzip mais si autoit le fait je suis preneur aussi
Re: [..] Gzip + équivalent replace DOS
Posté : mar. 26 août 2008 12:11
par jbnh
► Afficher le texte
Code : Tout sélectionner
#include <array.au3>
Func _Zip_Create($hFilename)
$hFp = FileOpen($hFilename, 17)
$sString = Chr(80) & Chr(75) & Chr(5) & Chr(6) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0)
FileWrite($hFp, $sString)
FileClose($hFp)
If Not FileExists($hFilename) Then
Return SetError(1, 0, 0)
Else
Return $hFilename
EndIf
EndFunc
Func _Zip_AddFile($hZipFile, $hFile2Add, $flag = 4)
Local $DLLChk = _Zip_DllChk()
If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0)
If Not FileExists($hZipFile) Then Return SetError(1, 0, 0)
$oApp = ObjCreate("Shell.Application")
$on = $oApp.NameSpace($hZipFile).Items.Count
$copy = $oApp.NameSpace($hZipFile).CopyHere($hFile2Add, $flag)
Do
Sleep(500)
$nn = $oApp.Namespace($hZipFile).Items.Count
Until $nn > $on
Return SetError(0, 0, 1)
EndFunc
Func _Zip_AddFolder($hZipFile, $hFolder, $flag = 4)
Local $DLLChk = _Zip_DllChk()
If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0)
If Not FileExists($hZipFile) Then Return SetError(1, 0, 0)
If StringRight($hFolder, 1) <> "\" Then $hFolder &= "\"
$oApp = ObjCreate("Shell.Application")
$oFolder = $oApp.NameSpace($hFolder)
$oCopy = $oApp.NameSpace($hZipFile).CopyHere($oFolder.Items, $flag)
$oFC = $oApp.NameSpace($hFolder).items.count
Do
Sleep(500)
$oZC = $oApp.NameSpace($hZipFile).Items.Count
Until ($oZC < $oFC)
Return SetError(0, 0)
EndFunc
Func _Zip_DllChk()
If Not FileExists(@SystemDir & "\zipfldr.dll") Then Return 2
If Not RegRead("HKEY_CLASSES_ROOT\CLSID\{E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31}", "") Then Return 3
Return 0
EndFunc
$zFile = _Zip_Create("C:\Documents and Settings\Propriétaire\Bureau\My_File.zip")
_Zip_AddFile($zFile, "C:\Documents and Settings\Propriétaire\Bureau\test.bmp")
Compléter les deux dernières lignes. Répéter l'action
_Zip_AddFile si plusieurs fichiers.
Utiliser
_Zip_AddFolder($zFile, "c:\test") pour des dossiers.
Zip.au3 UDF par Torels
/!\ Même si le fichier a contracter est au même endroit que le script, mettre le chemin complet ! /!\
Re: [..] Gzip + équivalent replace DOS
Posté : mar. 26 août 2008 15:25
par Tlem
En gardant l'utilitaire GZIP (qu'il suffira d'inclure dans l'exe par un FileInstall) :
Code : Tout sélectionner
$MonFichier = "Wallpaper1.bmp"
$MonFichier = FileGetShortName ($MonFichier) ;Par ce que GZIP ne peut gérer les noms long.
RunWait(@ScriptDir & '\gzip.exe -1f ' & $MonFichier, '', @SW_HIDE)