Voici donc le but de ce programme : à son lancement (en commande DOS), je passe un nom de fichier en argument. Ce fichier (ainsi que son nom) passent à la moulinette, pour fournir un nouveau fichier texte avec une nouvelle organisation.
Je ne peux pas mettre à disposition de fichier pour montrer que cela fonctionne (à moins d'avoir vraiment envie de me faire virer ^^), mais croyez moi, ça fonctionne ^^
Ce que fait ce script que j'ai eu du mal à trouver : récupérer un argument de commande DOS, récupérer une partie du nom du fichier traité ; à part ça, rien de bien transcendant, mais suffisant pour une reprise en douceur ^^
► Afficher le texte
Code : Tout sélectionner
; Programme de reconstruction de fichier Excel à partir de fichier texte
; Ghost Line - 2010
; ----------------------------------------------------------------------------------------
; SYNTHAXE : extrac_ent [chemin d'accès complet]\[nom du fichier avec extension]
; exemple : extrac_ent c:\temp\axconfig_33.dat
; ----------------------------------------------------------------------------------------
#include <file.au3>
; declaration des variables
$fichier_sortie = @WorkingDir&"\axconfig.txt"
$fichier_dat = ""
$num_com_EMV =""
$code_banque_EMV=""
$num_CTP_EMV=""
$num_abo_CHQ =""
$num_dom_CHQ=""
$stat_telec_CHQ=""
$num_app_CHQ=""
$num_com_REF=""
$lecture_fichier = Fileopen ($fichier_dat,0)
$ecriture_fichier = Fileopen ($fichier_sortie,1)
; ------------------------- RECUP DU CODE ENTREPOT PASSE DANS L'ARGUMENT ----------------
$fichier_dat = $cmdline[1]
$code_ent = StringRight($fichier_dat,7)
$code_ent = StringLeft($code_ent,3)
If StringLeft($code_ent,1) = "_" Then
$code_ent = ("0"&(StringRight($code_ent,2)))
EndIf
FileWrite($ecriture_fichier,$code_ent&";")
FileClose($fichier_sortie)
; ----------------------------------------------------------------------------------------
$CountLines=_FileCountLines($fichier_dat)
ProgressOn("","Progression du traitement")
For $i=1 to $CountLines
$ligne=FileReadLine ($fichier_dat,$i)
; ----------------------------------- EMV ------------------------------------------------
if StringInStr ($ligne, "EMV_BEGIN_") Then ; On récupère le n° commercant EMV
$num_com_EMV = StringRight ($ligne, 7)
EndIf
if StringInStr ($ligne, "T04_CODE_BANQUE") Then ; On récupère le code banque EMV
$code_banque_EMV = StringRight ($ligne, 5)
endif
if StringInStr ($ligne, "T22_APPEL_P") Then ; On récupère le n° de CTP
$num_CTP_EMV = StringRight ($ligne, 11)
endif
; Une fois toutes les valeurs récupérées, on écrit le "bloc"
If $num_com_EMV <> "" and $code_banque_EMV <> "" and $num_CTP_EMV <> "" Then
FileWrite($ecriture_fichier,"TELEMV;"&$num_com_EMV&";"&$code_banque_EMV&";"&$num_CTP_EMV&";")
FileClose($fichier_sortie)
$num_com_EMV =""
$code_banque_EMV=""
$num_CTP_EMV=""
EndIf
; ---------------------------------- /EMV ------------------------------------------------
; ----------------------------------- CHK ------------------------------------------------
if StringInStr ($ligne, "CHQ_BEGIN_") Then ; On récupère le n° abonnement chèque
$num_abo_CHQ = StringRight ($ligne, 10)
endif
if StringInStr ($ligne, "DOMICILIATION:") Then ; On récupère le n° de dom
$num_dom_CHQ = StringRight ($ligne, 5)
endif
if StringInStr ($ligne, "APP_TELE") Then ; On récupère le status de la télécoll
$stat_telec_CHQ = StringRight ($ligne, 1)
if $stat_telec_CHQ = "O" Then
$stat_telec_CHQ="TELCHQ"
else
$stat_telec_CHQ="CLOCHQ"
EndIf
endif
if StringInStr ($ligne, "PARAM_CB_TELE:") Then ; On récupère le n° d'appel
$num_app_CHQ = StringRight ($ligne, 9)
endif
; Une fois toutes les valeurs récupérées, on écrit le "bloc"
If $num_abo_CHQ <> "" and $num_dom_CHQ <> "" and $stat_telec_CHQ <> "" and $num_app_CHQ<> "" Then
If $stat_telec_CHQ="CLOTURE" Then $num_app_CHQ=""
If StringRight($num_app_CHQ,1) = "=" Then $num_app_CHQ = ""
$ecriture_fichier = FileOpen ($fichier_sortie,1)
FileWrite($ecriture_fichier,$stat_telec_CHQ&";"&$num_abo_CHQ&";"&$num_dom_CHQ&";"&$num_app_CHQ&";")
FileClose($fichier_sortie)
$num_abo_CHQ =""
$num_dom_CHQ=""
$stat_telec_CHQ=""
$num_app_CHQ=""
EndIf
; ---------------------------------- /CHK ------------------------------------------------
; ----------------------------------- REF ------------------------------------------------
if StringInStr ($ligne, "CTF_BEGIN_") Then ; On récupère le n° commercant Reflexe
$num_com_REF = StringRight ($ligne, 7)
EndIf
If $num_com_REF <> "" Then
$ecriture_fichier = FileOpen ($fichier_sortie,1)
FileWrite($ecriture_fichier,"CLOCTF"&";"&$num_com_REF)
$num_com_REF=""
EndIf
$pourcentage= $i * 100/$CountLines
ProgressSet($pourcentage, $pourcentage& " %")
Next
ProgressSet(100 , "Terminé", "Tâche complète")
sleep(1000)
ProgressOff()
FileClose ($fichier_dat)