Page 1 sur 2
[R] Augmenter la taille d'un fichier
Posté : sam. 21 août 2010 00:35
par robin25
Bonsoir tout le monde, j'aimerais savoir si il était possible d'augmenter la taille d'un fichier grâce a autoit vous ne connaissez pas une fonctionne qui pourrait faire cela svp car ca fait plusieurs jours que je cherche et je n'ai rien trouver de super concluant!! Merci d'avances pour vos réponses et bonnes soirée.
Re: [..]Augementer la taille d'un fichier
Posté : sam. 21 août 2010 00:36
par moutelous
Bonsoir,
Oups ..... A part " Ecrire " dans un fichier je ne connais aucun moyen d'en augmenter sa taille !!!
Re: [..] Augmenter la taille d'un fichier
Posté : sam. 21 août 2010 00:37
par Tlem
De quelle taille voulez-vous augmenter le fichier ?
Re: [..] Augmenter la taille d'un fichier
Posté : sam. 21 août 2010 13:56
par robin25
Ben en fait je voudrais réaliser un pumper ( un logiciel qui sert a augmenter la taille d'un fichier ) en autoit mais je ne sait pas ci c'est possible, quant a l'augmentation je pense que 1 ou 2 Méga sert déjà un bon début... J'ai observer sur le forum un script qui quand on exécute il double de volume donc je pense que c'est réalisable mais je n'ai encore trouver aucunes fonctions ou UDF qui permet de faire cela. Une idée? mercis d'avance pour vos réponses.
Re: [..] Augmenter la taille d'un fichier
Posté : sam. 21 août 2010 15:04
par moutelous
Bonjour,
Quel est le type de fichier que vous voulez traiter ? Un "exe" ?
Re: [..] Augmenter la taille d'un fichier
Posté : sam. 21 août 2010 17:51
par SrBelial
pour un fichier contenant des données en clair (texte, csv, xml, etc ...) il suffit d'ouvrir le fichier en mode ajout, de créer une ligne d'une taille donnée (attention aux éventuelles limitations sur la longueur des lignes)
puis d'écrire cette ligne à la fin du fichier autant de fois que nécessaire.
ci dessous un exemple :
Code : Tout sélectionner
$file = FileOpen("exemple.txt", 1) ;le mode 1 c'est le mode écriture en "ajout à la fin du fichier"
$line = ""
for $i = 1 To 1022 step 1
$line &= @TAB
Next
for $j = 1 To 1024 Step 1
FileWriteLine($file, $line)
Next
Ce code crée de quoi ajouter 1Mo au fichier.
J'arrête de suite ceux qui s'exclameront : Olala, sa ligne elle fait que 1022 caractères, c'est pas bon !!!
en fait si : FileWriteLine insère automatiquement les caractères (@CRLF) pour passer à la ligne suivante, qui comptent donc pour deux octets de plus à chaque ligne, voila pourquoi mes lignes ne contiennent que 1022 caractères de tabulation.
Si en revanche votre envie est d'augmenter la taille d'un fichier binaire (exe, archive, autre ...) alors là c'est de suite plus compliqué, parce qu'étant donné le fichier vous risquez tout simplement de le corrompre ! (hé oui cela arrive même en rajoutant des caractères anodins en fin de fichier ...)
Pour un petit script compilé j'ai fait le test avec mon exemple, ça à l'air de bien se passer, on peut ajouter sans trop de casse des données ...
Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 01:02
par Sh4dows
Il y a bien plus simple, cela marche pour tout type de fichiers :
Le code est simple : $SIZE = Lenomdelafonction
Et si vous désirez ajouter par exemple 3Mo il suffit de faire :
Code : Tout sélectionner
$SIZE = _MEGA_OCTETS()
$FILE = FileOpen(@ScriptDir&"\Explorer.exe", 1 +16)
FileWrite($FILE, $SIZE&$SIZE&$SIZE) ;On ajoute des $SIZE
Voilà le code :
Code : Tout sélectionner
$SIZE = _MEGA_OCTETS()
$FILE = FileOpen(@ScriptDir&"\Explorer.exe", 1 +16)
FileWrite($FILE, $SIZE)
Func _KILO_OCTETS()
Dim $TEMP_VALUE
For $i = 1 To 1024
$TEMP_VALUE &= 0
Next
Return $TEMP_VALUE
EndFunc
Func _MEGA_OCTETS()
Dim $TEMP_VALUE
For $i = 1 to 1024
$TEMP_VALUE &= _KILO_OCTETS()
Next
Return $TEMP_VALUE
EndFunc
Func _GIGA_OCTETS()
Dim $TEMP_VALUE
For $i = 1 to 1024
$TEMP_VALUE &= _MEGA_OCTETS()
Next
Return $TEMP_VALUE
EndFunc
Ce code rajoute tout simplement des 0 "factices" qui augmentent la taille et ils permettent d'executer le programme sans avoir de souci !
Ce sont des "bytes null" !
Je te déconseille le GIGA ma RAM n'a pas apprécier
Avant :
Après :
Résultat final :
P.S : OSEF les images

Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 13:35
par SrBelial
^____^
finalement en gros ça donne quasiment ce que je faisais ... le principe reste le même !
ta solution est un peu plus "formalisée" ... pas mal ^__^ et j'avoue ne pas avoir pensé à utiliser le mode d'écriture binaire pour le fichier ... ça permet de gagner un peu de temps par rapport à ma solution ...
je pense que ça résout la problématique posée ? si tel est le cas merci de le signaler par un [R] au début du titre du premier message .
Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 15:43
par Sh4dows
Ce fut un de mes premiers Script

Il utilise énormément les ressources de votre RAM !
Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 17:51
par SrBelial
tu m'étonne ^__^ !
c'est vrai que pour un système un peu léger il est déconseillé de trop utiliser ces fonctions ^___^
d'ailleurs une petite optimisation si tu veux mon avis :
au lieu de construire une chaine de caractères qui fait 1 giga (ouille la RAM !!!! ô_O), il faudrait chercher une solution pour que tes fonctions prennent le handle du fichier en paramètre, et fassent plutôt 1024 écritures de 1Mo dans le fichier (ou 1024*1024 écritures de 1Ko)
ça sera légèrement plus lent parce que : un peu plus d'accès disque, un peu plus d'opérations processeur,
mais 1024 fois moins gourmand en RAM (ou 1024*1024 fois moins suivant le cas)
d'ailleurs je serais curieux si tu peux faire des tests sur ta machine (je vois que tu as un quadcore) pour voir si en temps ça mets vraiment beaucoup plus ou bien si ça se contente de consommer un peu plus le CPU ... ^__^
si t'as le temps ça serait cool ^__^
(je regarde ça ce soir sur mon pc qui n'a que 3 coeurs)
Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 17:59
par Sh4dows
Pas de souci, dans la soirée [Très Tard] je te dit tout sa

Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 18:01
par SrBelial
merci ^__^
Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 21:32
par Tlem
Prem's ...
Bon, alors sur mon portable C2D 1,66Ghz avec 2,5Go de RAM, j'annonce :
de 1Ko à 100Mo => 3.68s
de 100Mo à 200Mo => 4.56s
de 1Ko à 1Go => 29.45s
Quand à l'utilisation CPU, je dirait environs 15-25% pour le script.
En fait lors de la création du fichier de 1Go, j'ai vu le % de CPU varier entre 18% et 60%.
Voici le code :
► Afficher le texte
Code : Tout sélectionner
Global $Start = TimerInit()
Global $SizeMo = 100 ; Taille à rajouter en Mo
Global $SrcFile = @ScriptDir & "\Test2.txt" ; Nom du fichier source
Global $DstFile = @ScriptDir & "\TestOut.txt" ; Nom du fichier de destination
Global $Chars
Global $Mo = 1024 * 1024
Global $TmpFile = @TempDir & '\tmpfile.dat'
$hFile = FileOpen($TmpFile, 2)
If $hFile = -1 Then
MsgBox(0, "Erreur", "Impossible de créer le fichier temporaire.")
Exit
EndIf
For $i = 1 to $Mo
$Chars &= Chr(0)
Next
For $i = 1 To $SizeMo * 1024 * 1023 Step $Mo
FileWrite($hFile, $Chars)
Next
FileClose($hFile)
RunWait(@ComSpec & " /c " & 'COPY /b "' & $SrcFile & '"+"' & $TmpFile & '" "' & $DstFile & '"', "", @SW_HIDE)
FileDelete($TmpFile)
MsgBox(0,"Durée d'exécution :", TimerDiff($Start)/1000 & " Secondes")
Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 23:08
par Sh4dows
Pour moi : [Pc de Bureau | Quadcore | 2.93GHz | RAM 4Go | OS : Seven (x64)]
de 1Ko à 100Mo => 1.13s
de 1Ko à 1Go => 24.55s
Quand au CPU environ 15-30% pour le fichier de 1Go !
Code utilisé :
Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 23:12
par Tlem
Par rapport au test fait précédemment, que dit le graph de la RAM physique ?
A mon avis il n'y à pas photo, mais je demande au cas ou ...

Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 23:29
par SrBelial
avec le code de Tlem moi j'obtiens ça :
AMD Athlon II X3 (je fais varier la cadence de 2.91GHz à 435 MHz)
2Go RAM
passage de 0 Ko à 100 Mo : entre 4.5 et 6.7 secondes, variation RAM imperceptible
passage de 0 Ko à 1 Go : un peu plus de 60 secondes, idem pour la RAM, occupation processeur très faible également (moins de 30% d'occupation d'un seul coeur => en moyenne 10% du temps processeur total)
par contre lorsque je descends mes performances, en cadençant chaque coeur à 435 MHz, le temps de passage de 0 Ko à 1 Go explose !!!! et le processus ne se montre pas plus gourmand, il ne prend pas tout le temps processeur disponible.
voila voila ... sympa cette petite étude ^__^
Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 23:36
par Sh4dows
Avant :
Après :
On voit qu'il y a eu une petite plaine

Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 23:46
par Tlem
Ouaip, ca l'a à peine chatouillé !!!
Re: [..] Augmenter la taille d'un fichier
Posté : lun. 23 août 2010 23:52
par Sh4dows
Effectivement juste un chouilla
Bon sur ce je me déconnecte !
Bonne fin de soirée/nuit à tous...
Re: [..] Augmenter la taille d'un fichier
Posté : mar. 24 août 2010 20:45
par Sh4dows
[R] Peut être ?
Si votre problème est Résolut merci d'éditer votre premier message afin de changer [..] en [R] !
Merci !
Cordialement sh4dows