Coupeur de fichier avec création d'un .bat

MasterNKZ Messages postés 38 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 26 août 2004 - 14 sept. 2002 à 17:34
Nerolph Messages postés 58 Date d'inscription vendredi 24 octobre 2003 Statut Membre Dernière intervention 4 septembre 2012 - 14 janv. 2004 à 12:47
Salut a tous
J'expose mon problème:
j'essaie de réaliser un coupeur de fichier en plusieurs parties ki crée donc un certain nombre de fichiers contenant chacun une partie du fichier coupé. Le problème se pose kan je veux tout rassembler. Je sais ke certains programme de ce genre créé en meme temps un autre fichier type *.bat ki, lorsque l'on clique dessus, reconstitue le fichier initial. Cette méthode est tres pratik, car elle évite de posseder ou de lancer le prog ki a couper le fichier pour le reconstituer. Alors j'aimerai bien faire cela mais je n'ai aucune idée de comment réaliser cela. Je ne sais pas comment on fait pour créer un fichier .bat à partir d'une application, auxquel on dit de faire tel ou tel chose lorsqu'on le lance.
Bon voila, j'espere que vous avez eu la force de lire tout ca, j'attend votre aide.

ciao et bonne prog.

3 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
14 sept. 2002 à 20:56
Ce n'est pas si compliqué, un fichier .BAT est tout simplement un fichier texte contenant des commandes MS-DOS ( tu sais le truc d'avant windows... ). Par exemple si un fichier ESS.ZIP est coupé en ESS.ZIP.001 à ESS.ZIP.010 alors le fichier .BAT doit contenir les commandes suivantes :
@Echo off
Echo En cours...
Copy ESS.ZIP.001 ESS.ZIP
Copy /B ESS.ZIP +ESS.ZIP.002
Copy /B ESS.ZIP +ESS.ZIP.003
Copy /B ESS.ZIP +ESS.ZIP.004
Copy /B ESS.ZIP +ESS.ZIP.005
Copy /B ESS.ZIP +ESS.ZIP.006
Copy /B ESS.ZIP +ESS.ZIP.007
Copy /B ESS.ZIP +ESS.ZIP.008
Copy /B ESS.ZIP +ESS.ZIP.009
Copy /B ESS.ZIP +ESS.ZIP.010
Echo Terminé...

C'est facile à créer avec Delphi :
Procedure CreerBAT(NomFichier:String;Nombre:Integer);
Var F:TextFile;
i:Integer;
Begin
AssignFile(F,NomFichier+'.BAT');
NomFichier:=ExtractFileName(NomFichier);
Rewrite(F);
WriteLn(F,'@Echo off');
WriteLn(F,'Echo En cours...');
WriteLn(F,'Copy '+NomFichier+'.001 '+NomFichier);
For i:=2 to Nombre Do WriteLn(F,'Copy /B '+NomFichier+' +'+NomFichier+'.'+Copy(IntToStr(i+1000),2,3));
WriteLn(F,'Echo Terminé...');
CloseFile(F);
End;

Pour appeler cette procédure, il suffit de donner le nom original du fichier et le nombre de morceaux :
procedure TForm1.Button1Click(Sender: TObject);
begin
CreerBat('C:\TEMP\ESS.ZIP',10);
end;

--- :sleepy) Nono du Moulin :sleepy) ---
0
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
14 sept. 2002 à 23:53
Pourquoi faire un fichier bat??

j'avais fait un truc du genre, mais je ne l'ai jamais fini.

Je coupais mon fichier en autant de fichiers voulus.
Le 1 er avait une extension .coop par exemple et les autre .c1 à .cX

au lieu de faire un fichier supplementaire, je m'etait toute les infos dans le 1 er fichier (le .coop)

au debut il y avait des octets perdu pour les info de tailles, nb de fichier, etc...

Biensur la taille du 1er fichier doit etre Taille de coupe - octets info

-------------------------------------------
DelphiCool

http://delphicool.developpez.com
0
Nerolph Messages postés 58 Date d'inscription vendredi 24 octobre 2003 Statut Membre Dernière intervention 4 septembre 2012
14 janv. 2004 à 12:47
Peut-être, mais l'avantage d'un fichier .BAT est qu'il fonctionne sur toutes les versions de Windows sans avoir à utiliser un programme extérieur.
Personnellement, je préfère la version de Nono40 : il n'y a aucune modification du fichier à couper puisque c'est le .BAT qui se charge de la coupe. Et même s'il n'y a pas de .BAT, il suffi d'aller sous DOS et de le faire soi-même (oui je sais c'est long il faut tout taper, mais bon on y arrive quand même). :)
0
Rejoignez-nous