7
votes

Si le fichier existe, supprimez le fichier

J'ai un VBScript utilisé pour renommer des fichiers. Ce que je dois mettre en œuvre dans le script est quelque chose qui supprime le "nouveau fichier" s'il existe déjà.

Par exemple: j'ai un lot de fichiers nommé comme ceci 11111111.DDDDDDDD.PDF où les fichiers sont renommés sur 11111111.pdf. Le problème est que lorsque je renommerai au format 11111111111111111.PDF, je fini par des fichiers dupliqués et que le script échoue, car vous ne pouvez évidemment pas avoir 2 fichiers avec le même nom. J'en ai besoin pour renommer le premier, mais supprimez ensuite les autres renommés les mêmes. P>

Voici ce que j'ai jusqu'à présent pour ma déclaration IF mais cela ne fonctionne pas et je reçois et que je reçois et erroné, dit "Mismachatch de type:" FileExists ". Je ne sais pas comment obtenir cette partie du code pour exécuter la façon dont je voudrais. Toute aide ou suggestions serait grandement appréciée. P>

dim infolder: set infolder = fso.GetFolder(IN_PATH)
dim file
for each file in infolder.files

dim name: name = file.name
dim parts: parts = split(name, ".")
dim acct_, date_
acct_ = parts(0)
date_ = parts(1)


' file format of a.c.pdf
if UBound(parts) = 2 then
    ' rebuild the name with the 0th and 2nd elements
    dim newname: newname = acct_ & "." & parts(2)
    ' use the move() method to effect the rename
    file.move fso.buildpath(OUT_PATH, newname)  

    if  newname = FileExists(file.name) Then            
    newname.DeleteFile()
    end if   
end if

next 'file


0 commentaires

3 Réponses :


4
votes

FileeExists () code> est une méthode de FileSystemObject code>, pas une fonction de portée globale.

Vous avez également un problème avec la suppression, deletefile () CODE> est également une méthode de FileSystemObject code>. p>

En outre, il semble que vous déplacez le fichier, puis essayez de gérer le problème de dépassement, qui est hors de commande. Vous devez d'abord détecter la collision de noms, vous pouvez donc choisir le fichier de renommer ou supprimer la collision en premier. Je suppose que vous supposez que vous souhaitiez continuer à supprimer les nouveaux fichiers jusqu'à ce que vous arriviez au dernier, qui semblait implicite dans votre question. P>

afin que vous puissiez utiliser le bloc: p>

if NOT fso.FileExists(newname) Then  

    file.move fso.buildpath(OUT_PATH, newname)           

else

    fso.DeleteFile newname
    file.move fso.buildpath(OUT_PATH, newname)  

end if 


1 commentaires

Merci pour votre réponse. J'ai testé cela aussi et ça marche.



14
votes

Vous êtes proche, il vous suffit de supprimer le fichier avant essayer de trop écrire. xxx


1 commentaires

Salman A- Je savais que cela devait être quelque chose de simple. J'ai tout travaillé sur elle et je n'en pensais pas droit. Fonctionne comme un charme. Très appréciée.



1
votes
IF both POS_History_bim_data_*.zip and POS_History_bim_data_*.zip.trg exists in  Y:\ExternalData\RSIDest\ Folder then Delete File Y:\ExternalData\RSIDest\Target_slpos_unzip_done.dat

0 commentaires