Lecture/ecriture de données dans des fichiers
Résolu/Fermé
Sgane
-
21 févr. 2008 à 17:49
carbon3 Messages postés 470 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 6 janvier 2013 - 29 févr. 2008 à 08:36
carbon3 Messages postés 470 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 6 janvier 2013 - 29 févr. 2008 à 08:36
A voir également:
- Lecture/ecriture de données dans des fichiers
- Écriture facebook - Guide
- Confirmation de lecture whatsapp - Guide
- Accusé de lecture gmail - Guide
- Écriture miroir - Guide
- Wetransfer gratuit fichiers lourd - Guide
17 réponses
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
22 févr. 2008 à 11:08
22 févr. 2008 à 11:08
alors voilà le code qui créer les copies dans chaque répertoire idoine.
fichier.vbs et fichier.xsr sont au même niveau que rep DSTV
il ne restera plus qu'à décider de la suppression des sources dans le DSTV qd on sera sûr du résultat ;-)
fichier.vbs et fichier.xsr sont au même niveau que rep DSTV
il ne restera plus qu'à décider de la suppression des sources dans le DSTV qd on sera sûr du résultat ;-)
dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject") Dim modifier: set modifier = FSO.opentextfile("modif.xsr",1) do while not modifier.atendofstream lect = modifier.readline separateur=InStr(lect, ";") dafile=Mid(lect,1,separateur-2) dafile=dafile & ".nc1" damod=Mid(lect,separateur+2) if FSO.FolderExists("DSTV\"+damod)<>true then makit=FSO.CreateFolder("DSTV\"+damod) end if set tempfold = FSO.GetFolder("DSTV\"+damod) set infile = FSO.opentextfile("DSTV\"+dafile,1) set dacopy = FSO.opentextfile(tempfold+"\"+dafile,8,true) nbrline=0 do while not infile.atendofstream readline = infile.readline nbrline=nbrline+1 if nbrline=3 then dacopy.writeline(damod) else dacopy.writeline(readline) end if loop loop modifier.close infile.close dacopy.close msgbox "~=. Modifications terminées .=~",64,"~= NC1 Modif =~"
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
22 févr. 2008 à 10:52
22 févr. 2008 à 10:52
slt
L'erreur Mid semble être provoquée par la présence de ligne vide à la fin du fichier.xsr
Peut-on les éviter ?
L'erreur Mid semble être provoquée par la présence de ligne vide à la fin du fichier.xsr
Peut-on les éviter ?
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
21 févr. 2008 à 19:49
21 févr. 2008 à 19:49
slt
si tu place le fichier.vbs dans le répertoire qui contient les fichier.nc1
tu obtiendras un répertoire contenant les copies modifiées de tout les fichiers.nc1
Dans un deuxième temps, je peux coder le remplacement des originaux par les copies.
Mais, comme je l'ai dit, pour l'instant c'est fonctionnel si tous les fichiers.nc1 sont dans le même répertoire.
Sinon, je vais avoir besoin de plus d'info sur la hierarchie ;-p
voici le code à insérer dans un fichier modifier_nc1.vbs
Ensuite, pour la création des répertoire relatifs aux modifs, sont-ce les copies modifiées des fichiers.nc1 que tu veux envoyer dedans ?
Il reste toujours la question de savoir où créer les répertoires...
si tu place le fichier.vbs dans le répertoire qui contient les fichier.nc1
tu obtiendras un répertoire contenant les copies modifiées de tout les fichiers.nc1
Dans un deuxième temps, je peux coder le remplacement des originaux par les copies.
Mais, comme je l'ai dit, pour l'instant c'est fonctionnel si tous les fichiers.nc1 sont dans le même répertoire.
Sinon, je vais avoir besoin de plus d'info sur la hierarchie ;-p
voici le code à insérer dans un fichier modifier_nc1.vbs
dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject") Dim modifier: set modifier = FSO.opentextfile("modif.xsr",1) set tempfold = FSO.CreateFolder("nc1_copy") do while not modifier.atendofstream lect = modifier.readline separateur=InStr(lect, ";") dafile=Mid(lect,1,separateur-2) dafile=dafile & ".nc1" damod=Mid(lect,separateur+2) set infile = FSO.opentextfile(dafile,1) set dacopy = FSO.opentextfile(tempfold+"\"+dafile,8,true) nbrline=0 do while not infile.atendofstream readline = infile.readline nbrline=nbrline+1 if nbrline=3 then dacopy.writeline(damod) else dacopy.writeline(readline) end if loop loop modifier.close infile.close dacopy.close msgbox "~=. Modifications terminées .=~",64,"~= NC1 Modif =~"
Ensuite, pour la création des répertoire relatifs aux modifs, sont-ce les copies modifiées des fichiers.nc1 que tu veux envoyer dedans ?
Il reste toujours la question de savoir où créer les répertoires...
Merci pour ta précieuse aide.
Effectivement, tous le fichiers .nc1 sont dans le même répertoire, nommé DSTV, le fichier .xsr est au même rang que ce répertoire. Il me faudra juste placer le .vbs au bon endroit ( la ou cela te semblera le plus judicieux ).
Pour les répertoires destination, ils se nommeront comme les modifs ( ABC, BCD, ... dans l'exemple ), et leur emplacement peut être dans le répertoire DSTV.
Au final, c'est vrai que les fichiers.nc1 source peuvent être supprimé, mais c'est pas obligatoire.
Cependant, j'ai bien fais comme tu le dis, mais j'ai une erreur :
Windows me dit :
----------------
Script : chemin\modifier_nc1.vbs
Ligne : 7
Caract. : 1
Erreur : Argument ou appel de procédure incorrect :'Mid'
Code : 800A0005
Source : Erreur d'exécution microsoft VBScript
----------------
Merci encore!!
Raynald
Effectivement, tous le fichiers .nc1 sont dans le même répertoire, nommé DSTV, le fichier .xsr est au même rang que ce répertoire. Il me faudra juste placer le .vbs au bon endroit ( la ou cela te semblera le plus judicieux ).
Pour les répertoires destination, ils se nommeront comme les modifs ( ABC, BCD, ... dans l'exemple ), et leur emplacement peut être dans le répertoire DSTV.
Au final, c'est vrai que les fichiers.nc1 source peuvent être supprimé, mais c'est pas obligatoire.
Cependant, j'ai bien fais comme tu le dis, mais j'ai une erreur :
Windows me dit :
----------------
Script : chemin\modifier_nc1.vbs
Ligne : 7
Caract. : 1
Erreur : Argument ou appel de procédure incorrect :'Mid'
Code : 800A0005
Source : Erreur d'exécution microsoft VBScript
----------------
Merci encore!!
Raynald
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
22 févr. 2008 à 12:27
22 févr. 2008 à 12:27
ok, merci, j'y suis presque...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
22 févr. 2008 à 12:59
22 févr. 2008 à 12:59
bon, alors à ce stade tout devrait fonctionner
mon test bloque sur L1.nc1 parce qu'il n'est pas dans DSTV
les fichiers manquants dans DSTV génèrent une erreur
L1-L2...L18->L22 etc... il semble qu'il en manque pas mal ;-(
à partir de là, il faudra effacer les répertoires créés avant de pouvoir relancer la procédure
j'ai pris pour base que les fichiers.nc1 ne dépassent pas 6 caractères
mon test bloque sur L1.nc1 parce qu'il n'est pas dans DSTV
les fichiers manquants dans DSTV génèrent une erreur
L1-L2...L18->L22 etc... il semble qu'il en manque pas mal ;-(
à partir de là, il faudra effacer les répertoires créés avant de pouvoir relancer la procédure
dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject") Dim modifier: set modifier = FSO.opentextfile("modif3.xsr",1) do while not modifier.atendofstream lect = modifier.readline separateur=InStr(lect, ";") dim recurs:recurs=7 dim linkto:linkto="" do while FSO.FileExists(linkto)<>true recurs=recurs-1 dafile=Mid(lect,3,recurs) dafile=dafile & ".nc1" linkto="DSTV\"+dafile 'msgbox dafile loop damod=Mid(lect,separateur+2) if FSO.FolderExists("DSTV\"+damod)<>true then makit=FSO.CreateFolder("DSTV\"+damod) end if set tempfold = FSO.GetFolder("DSTV\"+damod) set infile = FSO.opentextfile("DSTV\"+dafile,1) set dacopy = FSO.opentextfile(tempfold+"\"+dafile,8,true) nbrline=0 do while not infile.atendofstream readline = infile.readline nbrline=nbrline+1 if nbrline=3 then dacopy.writeline(damod) else dacopy.writeline(readline) end if loop loop modifier.close infile.close dacopy.close msgbox "~=. Modifications terminées .=~",64,"~= NC1 Modif =~"
j'ai pris pour base que les fichiers.nc1 ne dépassent pas 6 caractères
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
>
Sgane
22 févr. 2008 à 14:07
22 févr. 2008 à 14:07
C'est l'erreur qui remonte quand un fichier.nc1 n'est pas dans le répertoire DSTV mais existe en tant que fichier à modifier dans modif.xsr
Sgane
>
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
22 févr. 2008 à 14:24
22 févr. 2008 à 14:24
Bon, je viens de vider le répertoire DSTV pour ne laisser qu'un seul fichier, et j'ai fait de même avec la liste.
Ben, toujours la même erreur!
désolé, je suis chiant!
Ben, toujours la même erreur!
désolé, je suis chiant!
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
22 févr. 2008 à 14:22
22 févr. 2008 à 14:22
j'ai vérifié le process en supprimant de modif.xsr les fichiers qui ne sont pas dans DSTV et j'arrive au bout...
Il ne reste plus qu'à faire correspondre modif.xsr et le contenu de DSTV
(je l'aurai, un jour, je l'aurai... :o)
Il ne reste plus qu'à faire correspondre modif.xsr et le contenu de DSTV
(je l'aurai, un jour, je l'aurai... :o)
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
22 févr. 2008 à 14:37
22 févr. 2008 à 14:37
j'utilise la dernière version xsr, celle avec moins d'espaces.
... to be continued
... to be continued
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
22 févr. 2008 à 14:57
22 févr. 2008 à 14:57
Il ne te reste qu'à valider le problème comme étant résolu...
bonne continuation
bonne continuation
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
22 févr. 2008 à 17:09
22 févr. 2008 à 17:09
petite modif et ajout de l'option nettoyage
test ok chez moi
.../... loop infile.close dacopy.close cleanorifile=FSO.DeleteFile(linkto) loop modifier.close .../...
test ok chez moi
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
28 févr. 2008 à 15:11
28 févr. 2008 à 15:11
Salut Sgane,
tu penses bien que je vais y travailler...
Je t'envoie la fonction dès qu'elle est vérifiée opérationnelle.
tu penses bien que je vais y travailler...
Je t'envoie la fonction dès qu'elle est vérifiée opérationnelle.
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
>
Sgane
28 févr. 2008 à 18:28
28 févr. 2008 à 18:28
il est prêt, je règle juste un détail
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
28 févr. 2008 à 19:03
28 févr. 2008 à 19:03
Ca yest, c'est prêt.
Bon je te remets tout le code parce qu'il a fallu que je change de stratégie.
Les liste des fichiers manquants est stockée dans M_DSTV(date et heure).txt au même niveau que modifs.xsr et le script.vbs
j'espère que t'auras d'aussi bons résultats que moi
... Et c'est môa qui l'aie fait... ;o)
Bon je te remets tout le code parce qu'il a fallu que je change de stratégie.
Les liste des fichiers manquants est stockée dans M_DSTV(date et heure).txt au même niveau que modifs.xsr et le script.vbs
j'espère que t'auras d'aussi bons résultats que moi
dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject") Dim modifier: set modifier = FSO.opentextfile("modif.xsr",1) dim pas_dans_rep dajh=Cstr(Date()) hajh=Cstr(Time()) sjour=Mid(dajh,1,2) smois=Mid(dajh,4,2) san=Mid(dajh,7,4) sdate=sjour+smois+san sheure=Mid(hajh,1,2) smin=Mid(hajh,4,2) ssec=Mid(hajh,7,4) stime=sheure+smin+ssec recept_missing="M_DSTV"+sdate+stime+".txt" do while not modifier.atendofstream lect = modifier.readline separateur=InStr(lect, ";") dim recurs:recurs=7 dim linkto:linkto="" dim char_blank:char_blank=" " dim lkat:lkat=recurs do while lkat<>0 'msgbox "lkat " & lkat recurs=recurs-1 dafile=Mid(lect,3,recurs) lkat=Instr(dafile,char_blank) 'msgbox "next tour with "+dafile loop dafile=dafile+".nc1" linkto="DSTV\"+dafile if not FSO.FileExists(linkto) then set pas_dans_rep=FSO.opentextfile(recept_missing,8,true) pas_dans_rep.writeline linkto pas_dans_rep.close else damod=Mid(lect,separateur+2) if FSO.FolderExists("DSTV\"+damod)<>true then makit=FSO.CreateFolder("DSTV\"+damod) end if set tempfold = FSO.GetFolder("DSTV\"+damod) set infile = FSO.opentextfile("DSTV\"+dafile,1) set dacopy = FSO.opentextfile(tempfold+"\"+dafile,8,true) nbrline=0 do while not infile.atendofstream readline = infile.readline nbrline=nbrline+1 if nbrline=3 then dacopy.writeline(damod) else dacopy.writeline(readline) end if loop infile.close dacopy.close cleanorifile=FSO.DeleteFile(linkto) end if loop modifier.close msgbox "~=. Modifications terminées .=~",64,"~= NC1 Modif =~"
... Et c'est môa qui l'aie fait... ;o)
Je rajoute ceci :
Liens vers les fichiers, pour faire des tests.
les fichiers .nc1 à mettre dans un répertoire DSTV:
http://sgane.chez-alice.fr/1_dstv/DSTV.zip
Le fichier .xsr au même rang que le répertoire:
http://sgane.chez-alice.fr/1_dstv/modif.xsr
le fichier .vbs:
http://sgane.chez-alice.fr/1_dstv/modifier_nc1.vbs
Liens vers les fichiers, pour faire des tests.
les fichiers .nc1 à mettre dans un répertoire DSTV:
http://sgane.chez-alice.fr/1_dstv/DSTV.zip
Le fichier .xsr au même rang que le répertoire:
http://sgane.chez-alice.fr/1_dstv/modif.xsr
le fichier .vbs:
http://sgane.chez-alice.fr/1_dstv/modifier_nc1.vbs
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
22 févr. 2008 à 11:15
22 févr. 2008 à 11:15
houlala, je viens de visionner le modif.xsr ;-/
si les espaces ne peuvent être supprimés, peut-on être sûr qu'à l'avenir les xsr seront tous formatés ainsi ?
autrement je peux aussi essayer de réécrire le xsr...
comment est-il créée au départ ?
si les espaces ne peuvent être supprimés, peut-on être sûr qu'à l'avenir les xsr seront tous formatés ainsi ?
autrement je peux aussi essayer de réécrire le xsr...
comment est-il créée au départ ?
Oui, je te confirme que les emplacements seront toujours comme ça!
Le logiciel qui fait cette liste est en fait un éditeur de gabarit de liste et de croquis, l'emplacement de chaque champ est donc fixe.
le premier, peut varier en longueur, mais, pas plus de 6 caractères, le séparateur, lui ne bougera pas, sauf si tu veux le virer, et le dernier champ sera toujours une suite de 3 lettres.
voila!
Raynald.
Le logiciel qui fait cette liste est en fait un éditeur de gabarit de liste et de croquis, l'emplacement de chaque champ est donc fixe.
le premier, peut varier en longueur, mais, pas plus de 6 caractères, le séparateur, lui ne bougera pas, sauf si tu veux le virer, et le dernier champ sera toujours une suite de 3 lettres.
voila!
Raynald.
J'ai repris le fichier.xsr
pour en réduire le nombre d'espace.
http://sgane.chez-alice.fr/1_dstv/modif.xsr
pour en réduire le nombre d'espace.
http://sgane.chez-alice.fr/1_dstv/modif.xsr
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
22 févr. 2008 à 18:40
22 févr. 2008 à 18:40
Merci à toi de m'avoir donné l'occasion d'être utile...
Pour ce qui est de marquer le problème comme étant résolu, c'est moi qui ait besoin d'aide :-)
A+
Pour ce qui est de marquer le problème comme étant résolu, c'est moi qui ait besoin d'aide :-)
A+
Salut à tous.
Je sollicite à nouveau une aide!!
Est ce que l'on pourrais éviter le plantage quand il manque des fichiers par rapport à la liste.
Et en faire une synthèse à la fin des modifications.
On pourrais ajouter la liste des fichiers manquants avec le message de fin?
Merci d'avance!
Raynald.
je remes ici le code:
dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim modifier: set modifier = FSO.opentextfile("modif.xsr",1)
do while not modifier.atendofstream
lect = modifier.readline
separateur=InStr(lect, ";")
dim recurs:recurs=7
dim linkto:linkto=""
do while FSO.FileExists(linkto)<>true
recurs=recurs-1
dafile=Mid(lect,3,recurs)
dafile=dafile & ".nc1"
linkto="DSTV\"+dafile
loop
'msgbox dafile
damod=Mid(lect,separateur+2)
if FSO.FolderExists(damod)<>true then
makit=FSO.CreateFolder(damod)
end if
set tempfold = FSO.GetFolder(damod)
set infile = FSO.opentextfile("DSTV\"+dafile,1)
set dacopy = FSO.opentextfile(tempfold+"\"+dafile,8,true)
nbrline=0
do while not infile.atendofstream
readline = infile.readline
nbrline=nbrline+1
if nbrline=3 then
dacopy.writeline(" "+damod)
else
dacopy.writeline(readline)
end if
loop
infile.close
dacopy.close
cleanorifile=FSO.DeleteFile(linkto)
loop
modifier.close
msgbox "~=. Modifications terminées .=~",64,"~= NC1 Modif =~"
Je sollicite à nouveau une aide!!
Est ce que l'on pourrais éviter le plantage quand il manque des fichiers par rapport à la liste.
Et en faire une synthèse à la fin des modifications.
On pourrais ajouter la liste des fichiers manquants avec le message de fin?
Merci d'avance!
Raynald.
je remes ici le code:
dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim modifier: set modifier = FSO.opentextfile("modif.xsr",1)
do while not modifier.atendofstream
lect = modifier.readline
separateur=InStr(lect, ";")
dim recurs:recurs=7
dim linkto:linkto=""
do while FSO.FileExists(linkto)<>true
recurs=recurs-1
dafile=Mid(lect,3,recurs)
dafile=dafile & ".nc1"
linkto="DSTV\"+dafile
loop
'msgbox dafile
damod=Mid(lect,separateur+2)
if FSO.FolderExists(damod)<>true then
makit=FSO.CreateFolder(damod)
end if
set tempfold = FSO.GetFolder(damod)
set infile = FSO.opentextfile("DSTV\"+dafile,1)
set dacopy = FSO.opentextfile(tempfold+"\"+dafile,8,true)
nbrline=0
do while not infile.atendofstream
readline = infile.readline
nbrline=nbrline+1
if nbrline=3 then
dacopy.writeline(" "+damod)
else
dacopy.writeline(readline)
end if
loop
infile.close
dacopy.close
cleanorifile=FSO.DeleteFile(linkto)
loop
modifier.close
msgbox "~=. Modifications terminées .=~",64,"~= NC1 Modif =~"
carbon3
Messages postés
470
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
29 févr. 2008 à 08:36
29 févr. 2008 à 08:36
C'était un plaisir !
Bonne journée
Bonne journée