Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1939 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBS] (résolu) copy overwrite fonctionne pas.. pourquoi?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBS] (résolu) copy overwrite fonctionne pas.. pourquoi?

n°1242891
rules_taff
Posté le 10-11-2005 à 09:28:57  profilanswer
 

bonjour,
 
J'ai créé un script qui fait un tri lorsque des fichiers sont déposé sur un serveur FTP.
Ces fichiers ont comme particularités d'avoir un nom assez explicite:
STDannéemoi.log
 
J'ai donc fait un script qui récupère l'année du fichier puis le mois.
 
Cela donc créé donc une arborescente de cette sorte ANNEE / MOIS / fichier
 
 
Mon probleme est que ce fichier est incrémenté (c'est un fichier LOG) tous les jours et uploadé tous les jours sur mon FTP.
 
Donc tous les jours je dois trier les fichiers MAIS, je ne comprend pas pourquoi la copie n'overwrite pas le fichier de la veille.
 
Je pense que ce bout de code est mauvais mais je vois pas comment le modifier:
 

Code :
  1. StrCopy = sssmonth & "\" & objFile.FileName & "." & objFile.Extension
  2.  if Fso.Fileexists(StrCopy) then
  3.  else
  4.  objFile.Copy(StrCopy)
  5.  Set fd = fso.CreateTextFile(strcopy)
  6.  end if
  7.  objFile.Delete


 
 
avant j'avais mis ce code là et çà n'overwrite toujours pas:
 

Code :
  1. StrCopy = sssmonth & "\" & objFile.FileName & "." & objFile.Extension
  2. objFile.Copy(StrCopy)


 
Si vous voulez le reste du code, ya pas de pb... mais bon.. comme çà fonctionne.. je vois pas l'utilité de le mettre..
 
merci de votre aide!!


Message édité par rules_taff le 10-11-2005 à 14:32:50
mood
Publicité
Posté le 10-11-2005 à 09:28:57  profilanswer
 

n°1242896
rules_taff
Posté le 10-11-2005 à 09:40:00  profilanswer
 

sur  le site de http://www.devguru.com
 
je respecte pourtant bien la syntaxe de copy
 
Copy
Syntax: object.Copy destination[, overwrite]
This method copies the selected file to the specified destination.

n°1242909
mareek
Et de 3 \o/
Posté le 10-11-2005 à 10:14:19  profilanswer
 

Pour qu'il ecrase le fichier précédent il faut écrire
objFile.Copy StrCopy, True


Message édité par mareek le 10-11-2005 à 10:20:37

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°1242919
rules_taff
Posté le 10-11-2005 à 10:28:28  profilanswer
 

désolé.. déjà essayé.. mais cela ne fonctionne pas!
 
et pour infos, les fichiers ne sont pas en lecture seul.
 
je bloque!

n°1242920
rules_taff
Posté le 10-11-2005 à 10:31:03  profilanswer
 

Pour overwrite, true est optionnelle. donc pas besoin de spécifier TRUE.
 
Suis en train de voir pour faire une procédure suivant la taille du fichier présent et le nouveau...
 
P'tet quand forcant... çà passera..
 
Mais si d'autres idées vous viennent à l'esprit...
chuis preneur!

n°1242945
mareek
Et de 3 \o/
Posté le 10-11-2005 à 11:05:10  profilanswer
 

Est-ce que ton fichier de log que tu dois écraser ne serait pas ouvert par une autre appli ? si c'est le cas, c'est normal que ça soit impossible de l'écraser.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°1242953
rules_taff
Posté le 10-11-2005 à 11:11:10  profilanswer
 

ce n'est pas le cas.

n°1242957
rules_taff
Posté le 10-11-2005 à 11:11:51  profilanswer
 

çà t'aiderais d'avoir le code entier?

n°1242967
mareek
Et de 3 \o/
Posté le 10-11-2005 à 11:23:00  profilanswer
 

t'as pas d'erreur quand tu copies ton fichier ?


Message édité par mareek le 10-11-2005 à 11:23:14

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°1243002
rules_taff
Posté le 10-11-2005 à 11:41:18  profilanswer
 

nan..il me dis rien... j'ai rajoute un Wscript.Echo au niveau de la boucle pour voir s'il passe bien dedans et c'est le cas! mais il n'écrase pas le fichier...
 
je continue toujours .. . . .

mood
Publicité
Posté le 10-11-2005 à 11:41:18  profilanswer
 

n°1243006
mareek
Et de 3 \o/
Posté le 10-11-2005 à 11:46:27  profilanswer
 

t'es sûr que tu copies le fichier au bon endroit ? parce que s'il n'y a pas d'erreur et que le fichier n'est pas écrasé c'est qu'il l'a copié ailleur


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°1243020
rules_taff
Posté le 10-11-2005 à 11:52:48  profilanswer
 

et bé alors il est copié dans le vent! parce que je le vois pas!
 
je te copie colle tout mon code et tu verras ...
 
la faut que je rebootes..


Message édité par rules_taff le 10-11-2005 à 11:53:10
n°1243034
rules_taff
Posté le 10-11-2005 à 12:01:58  profilanswer
 

Code :
  1. '//////////////// C'est ici que l'on demande de faire un premier ////////////////////////'
  2. '////////////////////tri des fichiers dont l'extension est log///////////////////////////'
  3. strComputer = "."
  4. DIM Filemonth, Fileyeartmp,Fileyear, Filefull,Fso,nostd,stdornot,stdout
  5. set Fso = createObject("scripting.FilesystemObject" )
  6. Set objWMIService = GetObject("winmgmts:" _
  7.     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
  8. Set colFiles = objWMIService. _
  9. ExecQuery("Select * from CIM_DataFile where Extension = 'log' and Path = '\\ftp\\ftp\\'" )
  10. For Each objFile in colFiles
  11. Filefull= objFile.FileName    '/on duplique le nom du fichier pour le traiter dans une variable à part
  12. Filemonthnumber= right(Filefull,2)  '/on cherche à connaitre la valeur du mois ( 2 derniers chiffres du fichier)
  13. Fileyeartmp= right(Filefull,6)   '/on prend les 6 derniers numeros du fichier
  14. Fileyear= left(Fileyeartmp,4)   '/sur les 6 numeros de Fileyeartmp, on en retire le mois: ce qui nous donne l'année
  15. ddate_today=now
  16. nday = day(ddate_today)
  17. nmonth= month(ddate_today)
  18. nyear= year(ddate_today)
  19. created= "File created in BIN the year " & nyear &" and month " & nmonth &" and day "& nday
  20. '/////////////////on cherche à savoir si le fichier commence par STD////////////////////'
  21. sserveur = "c:\ftp\ftp"
  22. If left(Filefull,3) = "std"  and len(Filefull) = 9 then
  23. '//////////////////////////On indique le dossier de travail et /////////////////////////'
  24. '////////////la création du dossier de l'année en rapport avec le nom du fichier////////'
  25.  dim ssyear
  26.  ssyear = sserveur &"\"&Fileyear
  27.   If (Fso.Folderexists(Fileyear)) then
  28.   else
  29.   Fso.createFolder(Fileyear)
  30.   End if
  31. '/////////////////////On va ici modifier la variable ssmonth pour///////////////////////'
  32. '////////// la convertir de numero du mois à son écriture plus explicite ///////////////'
  33.  dim ssmonth
  34.  dim sssmonth
  35.   Select Case Filemonthnumber
  36.     Case 01     ssmonth = "01_January"
  37.           Case 02     ssmonth = "02_February"
  38.            Case 03     ssmonth = "03_March"
  39.           Case 04     ssmonth = "04_April"
  40.           Case 05     ssmonth = "05_May"
  41.           Case 06     ssmonth = "06_June"
  42.           Case 07     ssmonth = "07_July"
  43.           Case 08     ssmonth = "08_August"
  44.           Case 09     ssmonth = "09_September"
  45.           Case 10     ssmonth = "10_October"
  46.           Case 11     ssmonth = "11_November"
  47.           Case 12     ssmonth = "12_December"
  48.       End Select
  49.  sssmonth = ssyear &"\"&ssmonth
  50.   If (Fso.Folderexists(sssmonth)) then
  51.   else
  52.   Fso.createFolder(sssmonth)
  53.   End if
  54. '////////////////ici on exécute la fonction de triage//////////////'
  55. StrCopy = sssmonth & "\" & objFile.FileName & "." & objFile.Extension
  56. objFile.Copy(StrCopy)
  57. objFile.Delete
  58. '/////////ici on effectue le déplacement des fichiers non STD dans le dossier BIN///////////'
  59. else
  60. dim BIN
  61.   BIN = sserveur &"\bin"
  62.   If (Fso.Folderexists(BIN)) then
  63.   else
  64.   Fso.createFolder(BIN)
  65.   End if
  66.  StrCopy = BIN & "\" & objFile.FileName & " " & created & "." & objFile.Extension
  67.  objFile.copy(StrCopy)
  68.  objFile.Delete
  69. end if
  70. next


 
J'ai oublié de préciser un truc.. c'est mon premier script en VBS... :D  

n°1243109
dahlo
Posté le 10-11-2005 à 13:10:24  profilanswer
 

A la lecture: Lignes 27 et 29 remplace Fileyear par ssyear sinon le dossier ne sera pas créé dans sserver mais dans le rep du script

n°1243138
rules_taff
Posté le 10-11-2005 à 13:41:33  profilanswer
 

merci dahlo pour cette erreur.. mais cela ne résout toujours pas mon probleme..
 

n°1243169
dahlo
Posté le 10-11-2005 à 14:08:05  profilanswer
 

A la vérif, la méthode copy() de la classe CIM_DataFile ne supporte pas l'écrasement d'un fichier existant :(
 

Citation :

Copy Method of the CIM_DataFile Class
The Copy method copies the logical file (or directory) that is specified in the object path to the location specified by the input parameter. A copy is not supported if it requires overwriting an existing logical file. This method is inherited from CIM_LogicalFile.


 
Remplace ligne 56: objFile.Copy(StrCopy)
par:
    Fso.CopyFile sserveur & "\" & objfile.Filename & "." & objfile.Extension, Strcopy, True

n°1243182
rules_taff
Posté le 10-11-2005 à 14:23:15  profilanswer
 

MERCI!!!!!!
 
çà fonctionne!!!
 

n°1243185
rules_taff
Posté le 10-11-2005 à 14:25:00  profilanswer
 

bon.. j'ai encore un truc à modifier.. et j'aurais surement encore besoin de tes precieux conseils.
 
mais je vais tout de meme essayer de chercher de mon coté...

n°1243190
rules_taff
Posté le 10-11-2005 à 14:26:27  profilanswer
 

Qu'est qui t'a mis le doigt sur le CIM_datafile au faite?

n°1243212
dahlo
Posté le 10-11-2005 à 14:46:43  profilanswer
 

Par une réactivation soudaine d'un ancien neurotransmetteur et re-vérif msdn, m'étais déjà fait avoir ;)

n°1243219
rules_taff
Posté le 10-11-2005 à 14:52:46  profilanswer
 

ok!
merci tout de meme!!!
 
j'aurais jamais pensé à vérifier çà!  comme je l'ai dis.. c'est mon premier script VB!

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBS] (résolu) copy overwrite fonctionne pas.. pourquoi?

 

Sujets relatifs
[VBA-EXCEL 2003][resolu] suppression des feuilles contenant le mot[Mysql]Resolu Probleme de migration 3.23 -> 4.1
[RESOLU]Sélection d'un tableau Word[Résolu][VB .net] Drag & drop entre deux applications
[VBS] Dernièrres lignes[RESOLU] CSS : id de H1
[VB] Ouvrir une page internet [résolu][resolu][PHP] extraction d'un operateur dans une string
[resolu] DOM (XML) : insertion d'un élément avant un autreComprendre la fonction ord en pascal [Résolu]
Plus de sujets relatifs à : [VBS] (résolu) copy overwrite fonctionne pas.. pourquoi?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR