J'ai réalisé le code ci-dessous pour me permettre de supprimer, pour tous
les fichiers présents dans le dossier, les espaces qui sont compris dans le
nom des fichiers.
Ce code fonctionne bien jusqu'au 41 fichiers traités puis apparait le
message d'erreur suivant :
Script : C:\arcgis\FredDeveloppement\Sample_VBSCRIPT\SupprimeEspace.vbs
Ligne : 31
Caract. : 7
Erreur : Ce fichier existe déjà.
Code : 800A003A
Source : Erreur d'execution Microsoft VBScript
Si qq un peut me donner un coup de main pour voir ce qui ne va pas ?
Merci d'avance
Le code en question :
' -----------------------------------------------
' Supprime les espaces dans le nom des fichiers
' contenus dans un dossier
'
' Frédéric Prally Octobre 2005
' -----------------------------------------------
Dim fso,f,fc,f1
Dim path, Name, OldName, NewName, NewFile, Result
Dim folder
Dim countFile
Set fso = CreateObject("Scripting.FileSystemObject")
path = "C:\temp\NOTRE-DAME-DE-BLIQUETUIT_old"
set folder = fso.GetFolder(path)
'Vérifie l'existence du dossier
If (fso.FolderExists(folder)) Then
msgbox folder & " existe."
Else
msgbox folder & " n'existe pas."
End If
'Parcours Tous les fichiers contenu dans le dossier
set fc = folder.Files
For Each f1 in fc
oldName = f1.Name
wscript.Echo oldName
NewName = replace(oldName , " ", "")
set NewFile = fso.GetFile(path & "\" & oldName)
NewFile.Name = NewName
Next
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Georges MAUREL
Bonjour, Il semblerait que vous ayez des fichiers qui, si on enlève les espaces, ont le même nom Ainsi, vous pouvez avoir : a a.txt a a.txt Mais après avoir enlevé les espaces vous allez avoir : aa.txt pour le premier et vous ne pourrez pas renommer le second car aa.txt existe déjà
Voyez si vous ne pouvez pas remplacer les espaces par d'autres caractères...
Cordialement Georges
"Frédéric Prally" a écrit dans le message de news:
Bonjour à tous,
J'ai réalisé le code ci-dessous pour me permettre de supprimer, pour tous les fichiers présents dans le dossier, les espaces qui sont compris dans le nom des fichiers.
Ce code fonctionne bien jusqu'au 41 fichiers traités puis apparait le message d'erreur suivant : Script : C:arcgisFredDeveloppementSample_VBSCRIPTSupprimeEspace.vbs Ligne : 31 Caract. : 7 Erreur : Ce fichier existe déjà. Code : 800A003A Source : Erreur d'execution Microsoft VBScript
Si qq un peut me donner un coup de main pour voir ce qui ne va pas ?
Merci d'avance
Le code en question :
' ----------------------------------------------- ' Supprime les espaces dans le nom des fichiers ' contenus dans un dossier ' ' Frédéric Prally Octobre 2005 ' ----------------------------------------------- Dim fso,f,fc,f1 Dim path, Name, OldName, NewName, NewFile, Result Dim folder Dim countFile
Set fso = CreateObject("Scripting.FileSystemObject") path = "C:tempNOTRE-DAME-DE-BLIQUETUIT_old" set folder = fso.GetFolder(path)
'Vérifie l'existence du dossier If (fso.FolderExists(folder)) Then msgbox folder & " existe." Else msgbox folder & " n'existe pas." End If
'Parcours Tous les fichiers contenu dans le dossier set fc = folder.Files
For Each f1 in fc oldName = f1.Name wscript.Echo oldName NewName = replace(oldName , " ", "") set NewFile = fso.GetFile(path & "" & oldName) NewFile.Name = NewName Next
wscript.Echo "Suppression des espaces"
Bonjour,
Il semblerait que vous ayez des fichiers qui, si on enlève les espaces, ont
le même nom
Ainsi, vous pouvez avoir :
a a.txt
a a.txt
Mais après avoir enlevé les espaces vous allez avoir :
aa.txt pour le premier
et vous ne pourrez pas renommer le second car aa.txt existe déjà
Voyez si vous ne pouvez pas remplacer les espaces par d'autres caractères...
Cordialement
Georges
"Frédéric Prally" <FrdricPrally@discussions.microsoft.com> a écrit dans le
message de news: BC1DDB89-44F8-4446-8F88-3D0D7D811A2E@microsoft.com...
Bonjour à tous,
J'ai réalisé le code ci-dessous pour me permettre de supprimer, pour tous
les fichiers présents dans le dossier, les espaces qui sont compris dans
le
nom des fichiers.
Ce code fonctionne bien jusqu'au 41 fichiers traités puis apparait le
message d'erreur suivant :
Script : C:arcgisFredDeveloppementSample_VBSCRIPTSupprimeEspace.vbs
Ligne : 31
Caract. : 7
Erreur : Ce fichier existe déjà.
Code : 800A003A
Source : Erreur d'execution Microsoft VBScript
Si qq un peut me donner un coup de main pour voir ce qui ne va pas ?
Merci d'avance
Le code en question :
' -----------------------------------------------
' Supprime les espaces dans le nom des fichiers
' contenus dans un dossier
'
' Frédéric Prally Octobre 2005
' -----------------------------------------------
Dim fso,f,fc,f1
Dim path, Name, OldName, NewName, NewFile, Result
Dim folder
Dim countFile
Set fso = CreateObject("Scripting.FileSystemObject")
path = "C:tempNOTRE-DAME-DE-BLIQUETUIT_old"
set folder = fso.GetFolder(path)
'Vérifie l'existence du dossier
If (fso.FolderExists(folder)) Then
msgbox folder & " existe."
Else
msgbox folder & " n'existe pas."
End If
'Parcours Tous les fichiers contenu dans le dossier
set fc = folder.Files
For Each f1 in fc
oldName = f1.Name
wscript.Echo oldName
NewName = replace(oldName , " ", "")
set NewFile = fso.GetFile(path & "" & oldName)
NewFile.Name = NewName
Next
Bonjour, Il semblerait que vous ayez des fichiers qui, si on enlève les espaces, ont le même nom Ainsi, vous pouvez avoir : a a.txt a a.txt Mais après avoir enlevé les espaces vous allez avoir : aa.txt pour le premier et vous ne pourrez pas renommer le second car aa.txt existe déjà
Voyez si vous ne pouvez pas remplacer les espaces par d'autres caractères...
Cordialement Georges
"Frédéric Prally" a écrit dans le message de news:
Bonjour à tous,
J'ai réalisé le code ci-dessous pour me permettre de supprimer, pour tous les fichiers présents dans le dossier, les espaces qui sont compris dans le nom des fichiers.
Ce code fonctionne bien jusqu'au 41 fichiers traités puis apparait le message d'erreur suivant : Script : C:arcgisFredDeveloppementSample_VBSCRIPTSupprimeEspace.vbs Ligne : 31 Caract. : 7 Erreur : Ce fichier existe déjà. Code : 800A003A Source : Erreur d'execution Microsoft VBScript
Si qq un peut me donner un coup de main pour voir ce qui ne va pas ?
Merci d'avance
Le code en question :
' ----------------------------------------------- ' Supprime les espaces dans le nom des fichiers ' contenus dans un dossier ' ' Frédéric Prally Octobre 2005 ' ----------------------------------------------- Dim fso,f,fc,f1 Dim path, Name, OldName, NewName, NewFile, Result Dim folder Dim countFile
Set fso = CreateObject("Scripting.FileSystemObject") path = "C:tempNOTRE-DAME-DE-BLIQUETUIT_old" set folder = fso.GetFolder(path)
'Vérifie l'existence du dossier If (fso.FolderExists(folder)) Then msgbox folder & " existe." Else msgbox folder & " n'existe pas." End If
'Parcours Tous les fichiers contenu dans le dossier set fc = folder.Files
For Each f1 in fc oldName = f1.Name wscript.Echo oldName NewName = replace(oldName , " ", "") set NewFile = fso.GetFile(path & "" & oldName) NewFile.Name = NewName Next
wscript.Echo "Suppression des espaces"
Fred
Dans le message:, Georges MAUREL écrit:
Bonjour,
Bonjour,
Il semblerait que vous ayez des fichiers qui, si on enlève les espaces, ont le même nom
Oui, ou bien peut-être un fichier dont le nom ne contient pas d'espace. J'ai eu le souci en testant un bout de script posté pour Dan dans le fil «Comment parcourir des sous-répertoires» initié le 2/10 à 12h26. La solution consiste à n'affecter NewName à la propriété Name que si NewName est différent de OldName.
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Dans le message:uiPVGBPyFHA.916@TK2MSFTNGP10.phx.gbl,
Georges MAUREL écrit:
Bonjour,
Bonjour,
Il semblerait que vous ayez des fichiers qui, si on enlève les
espaces, ont le même nom
Oui, ou bien peut-être un fichier dont le nom ne contient pas d'espace.
J'ai eu le souci en testant un bout de script posté pour Dan dans le fil
«Comment parcourir des sous-répertoires» initié le 2/10 à 12h26.
La solution consiste à n'affecter NewName à la propriété Name que si
NewName est différent de OldName.
Il semblerait que vous ayez des fichiers qui, si on enlève les espaces, ont le même nom
Oui, ou bien peut-être un fichier dont le nom ne contient pas d'espace. J'ai eu le souci en testant un bout de script posté pour Dan dans le fil «Comment parcourir des sous-répertoires» initié le 2/10 à 12h26. La solution consiste à n'affecter NewName à la propriété Name que si NewName est différent de OldName.
aa.txt ==> aa.txt a a.txt ==> a_a.txt a a.txt ==> a__a.txt
Le risque, c'est plutôt celui que tu as, toi, décrit : a__a.txt existant déjà, avant le traitement.
Mais, plutôt que de traiter le cas à la volée, s'il se présente, je pencherais pour faire une passe de vérification préalable.
@-salutations
Michel Claveau
Fred
Dans : news:%, Do Re Mi chel La Si Do disait :
Si :
aa.txt ==> aa.txt a a.txt ==> a_a.txt a a.txt ==> a__a.txt
Le risque, c'est plutôt celui que tu as, toi, décrit : a__a.txt existant déjà, avant le traitement.
Justement, c'est Georges qui décrit cela. Moi je mentionne le problème facilement reproductible avec le petit exemple suivant : 8<----------------- Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFile = oFSO.GetFile("C:test.txt") oFile.Name = "test.txt" 'Plantage : «le fichier existe déjà» 8<------------------ Autrement dit, l'instruction : oFile.Name = Replace(oFile.Name, " ", car_quelconque) plantera, dès lors qu'il n'y a pas d'espace dans le nom du fichier. C'est un comportement un peu étrange à mon avis.
Mais, plutôt que de traiter le cas à la volée, s'il se présente, je pencherais pour faire une passe de vérification préalable.
Dans ce genre de situation, j'utilise une méthode analogue à celle de windows. Un truc du genre (à l'extension près) : 8<-------------------- nom = nombase ndx = 0 While oFSO.FileExists(nom) ndx = ndx + 1 nom = nombase & " (" & ndx & ")" Wend 8<--------------------
@-salutations
Cordialement.
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Dans : news:%23A0SLmRyFHA.900@TK2MSFTNGP11.phx.gbl,
Do Re Mi chel La Si Do disait :
Si :
aa.txt ==> aa.txt
a a.txt ==> a_a.txt
a a.txt ==> a__a.txt
Le risque, c'est plutôt celui que tu as, toi, décrit : a__a.txt
existant déjà, avant le traitement.
Justement, c'est Georges qui décrit cela.
Moi je mentionne le problème facilement reproductible avec le petit
exemple suivant :
8<-----------------
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = oFSO.GetFile("C:test.txt")
oFile.Name = "test.txt" 'Plantage : «le fichier existe déjà»
8<------------------
Autrement dit, l'instruction :
oFile.Name = Replace(oFile.Name, " ", car_quelconque)
plantera, dès lors qu'il n'y a pas d'espace dans le nom du fichier.
C'est un comportement un peu étrange à mon avis.
Mais, plutôt que de traiter le cas à la volée, s'il se présente, je
pencherais pour faire une passe de vérification préalable.
Dans ce genre de situation, j'utilise une méthode analogue à celle de
windows. Un truc du genre (à l'extension près) :
8<--------------------
nom = nombase
ndx = 0
While oFSO.FileExists(nom)
ndx = ndx + 1
nom = nombase & " (" & ndx & ")"
Wend
8<--------------------
aa.txt ==> aa.txt a a.txt ==> a_a.txt a a.txt ==> a__a.txt
Le risque, c'est plutôt celui que tu as, toi, décrit : a__a.txt existant déjà, avant le traitement.
Justement, c'est Georges qui décrit cela. Moi je mentionne le problème facilement reproductible avec le petit exemple suivant : 8<----------------- Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFile = oFSO.GetFile("C:test.txt") oFile.Name = "test.txt" 'Plantage : «le fichier existe déjà» 8<------------------ Autrement dit, l'instruction : oFile.Name = Replace(oFile.Name, " ", car_quelconque) plantera, dès lors qu'il n'y a pas d'espace dans le nom du fichier. C'est un comportement un peu étrange à mon avis.
Mais, plutôt que de traiter le cas à la volée, s'il se présente, je pencherais pour faire une passe de vérification préalable.
Dans ce genre de situation, j'utilise une méthode analogue à celle de windows. Un truc du genre (à l'extension près) : 8<-------------------- nom = nombase ndx = 0 While oFSO.FileExists(nom) ndx = ndx + 1 nom = nombase & " (" & ndx & ")" Wend 8<--------------------
@-salutations
Cordialement.
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Frédéric Prally
Bonjour à tous,
Vraiment désolé de ne pas avoir donné suite à vos réponses mais j'étais sur le terrain. Grâce à la réponse de Fred, j'ai résolu mon problème : il a suffit que je mette une condition dans ma boucle à savoir si NewName est différent de OldName alors suite de la procédure.
Encore merci à tous !! '********************************************* ' ----------------------------------------------- ' Supprime les espaces dans le nom des fichiers ' contenus dans un dossier ' ' Frédéric Prally Octobre 2005 ' ----------------------------------------------- Dim fso,f,fc,f1 Dim path, Name, OldName, NewName, NewFile, Result Dim folder Dim countFile
Set fso = CreateObject("Scripting.FileSystemObject") path = "C:tempNOTRE-DAME-DE-BLIQUETUIT" set folder = fso.GetFolder(path)
'Vérifie l'existence du dossier If (fso.FolderExists(folder)) Then msgbox folder & " existe." Else msgbox folder & " n'existe pas." End If
'Parcours Tous les fichiers contenu dans le dossier set fc = folder.Files
For Each f1 in fc oldName = f1.Name wscript.Echo oldName NewName = replace(oldName , " ", "") if NewName <> oldName then set NewFile = fso.GetFile(path & "" & oldName) NewFile.Name = NewName end if Next
wscript.Echo "FIN ... Suppression des espaces" set fc = nothing set f1 = nothing set NewFile = nothing
'********************************************* Voici le code corrigé :
Dans : news:%, Do Re Mi chel La Si Do disait :
Si :
aa.txt ==> aa.txt a a.txt ==> a_a.txt a a.txt ==> a__a.txt
Le risque, c'est plutôt celui que tu as, toi, décrit : a__a.txt existant déjà, avant le traitement.
Justement, c'est Georges qui décrit cela. Moi je mentionne le problème facilement reproductible avec le petit exemple suivant : 8<----------------- Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFile = oFSO.GetFile("C:test.txt") oFile.Name = "test.txt" 'Plantage : «le fichier existe déjà» 8<------------------ Autrement dit, l'instruction : oFile.Name = Replace(oFile.Name, " ", car_quelconque) plantera, dès lors qu'il n'y a pas d'espace dans le nom du fichier. C'est un comportement un peu étrange à mon avis.
Mais, plutôt que de traiter le cas à la volée, s'il se présente, je pencherais pour faire une passe de vérification préalable.
Dans ce genre de situation, j'utilise une méthode analogue à celle de windows. Un truc du genre (à l'extension près) : 8<-------------------- nom = nombase ndx = 0 While oFSO.FileExists(nom) ndx = ndx + 1 nom = nombase & " (" & ndx & ")" Wend 8<--------------------
@-salutations
Cordialement.
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Bonjour à tous,
Vraiment désolé de ne pas avoir donné suite à vos réponses mais j'étais sur
le terrain.
Grâce à la réponse de Fred, j'ai résolu mon problème : il a suffit que je
mette une condition dans ma boucle à savoir si NewName est différent de
OldName alors suite de la procédure.
Encore merci à tous !!
'*********************************************
' -----------------------------------------------
' Supprime les espaces dans le nom des fichiers
' contenus dans un dossier
'
' Frédéric Prally Octobre 2005
' -----------------------------------------------
Dim fso,f,fc,f1
Dim path, Name, OldName, NewName, NewFile, Result
Dim folder
Dim countFile
Set fso = CreateObject("Scripting.FileSystemObject")
path = "C:tempNOTRE-DAME-DE-BLIQUETUIT"
set folder = fso.GetFolder(path)
'Vérifie l'existence du dossier
If (fso.FolderExists(folder)) Then
msgbox folder & " existe."
Else
msgbox folder & " n'existe pas."
End If
'Parcours Tous les fichiers contenu dans le dossier
set fc = folder.Files
For Each f1 in fc
oldName = f1.Name
wscript.Echo oldName
NewName = replace(oldName , " ", "")
if NewName <> oldName then
set NewFile = fso.GetFile(path & "" & oldName)
NewFile.Name = NewName
end if
Next
wscript.Echo "FIN ... Suppression des espaces"
set fc = nothing
set f1 = nothing
set NewFile = nothing
'*********************************************
Voici le code corrigé :
Dans : news:%23A0SLmRyFHA.900@TK2MSFTNGP11.phx.gbl,
Do Re Mi chel La Si Do disait :
Si :
aa.txt ==> aa.txt
a a.txt ==> a_a.txt
a a.txt ==> a__a.txt
Le risque, c'est plutôt celui que tu as, toi, décrit : a__a.txt
existant déjà, avant le traitement.
Justement, c'est Georges qui décrit cela.
Moi je mentionne le problème facilement reproductible avec le petit
exemple suivant :
8<-----------------
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = oFSO.GetFile("C:test.txt")
oFile.Name = "test.txt" 'Plantage : «le fichier existe déjà»
8<------------------
Autrement dit, l'instruction :
oFile.Name = Replace(oFile.Name, " ", car_quelconque)
plantera, dès lors qu'il n'y a pas d'espace dans le nom du fichier.
C'est un comportement un peu étrange à mon avis.
Mais, plutôt que de traiter le cas à la volée, s'il se présente, je
pencherais pour faire une passe de vérification préalable.
Dans ce genre de situation, j'utilise une méthode analogue à celle de
windows. Un truc du genre (à l'extension près) :
8<--------------------
nom = nombase
ndx = 0
While oFSO.FileExists(nom)
ndx = ndx + 1
nom = nombase & " (" & ndx & ")"
Wend
8<--------------------
Vraiment désolé de ne pas avoir donné suite à vos réponses mais j'étais sur le terrain. Grâce à la réponse de Fred, j'ai résolu mon problème : il a suffit que je mette une condition dans ma boucle à savoir si NewName est différent de OldName alors suite de la procédure.
Encore merci à tous !! '********************************************* ' ----------------------------------------------- ' Supprime les espaces dans le nom des fichiers ' contenus dans un dossier ' ' Frédéric Prally Octobre 2005 ' ----------------------------------------------- Dim fso,f,fc,f1 Dim path, Name, OldName, NewName, NewFile, Result Dim folder Dim countFile
Set fso = CreateObject("Scripting.FileSystemObject") path = "C:tempNOTRE-DAME-DE-BLIQUETUIT" set folder = fso.GetFolder(path)
'Vérifie l'existence du dossier If (fso.FolderExists(folder)) Then msgbox folder & " existe." Else msgbox folder & " n'existe pas." End If
'Parcours Tous les fichiers contenu dans le dossier set fc = folder.Files
For Each f1 in fc oldName = f1.Name wscript.Echo oldName NewName = replace(oldName , " ", "") if NewName <> oldName then set NewFile = fso.GetFile(path & "" & oldName) NewFile.Name = NewName end if Next
wscript.Echo "FIN ... Suppression des espaces" set fc = nothing set f1 = nothing set NewFile = nothing
'********************************************* Voici le code corrigé :
Dans : news:%, Do Re Mi chel La Si Do disait :
Si :
aa.txt ==> aa.txt a a.txt ==> a_a.txt a a.txt ==> a__a.txt
Le risque, c'est plutôt celui que tu as, toi, décrit : a__a.txt existant déjà, avant le traitement.
Justement, c'est Georges qui décrit cela. Moi je mentionne le problème facilement reproductible avec le petit exemple suivant : 8<----------------- Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFile = oFSO.GetFile("C:test.txt") oFile.Name = "test.txt" 'Plantage : «le fichier existe déjà» 8<------------------ Autrement dit, l'instruction : oFile.Name = Replace(oFile.Name, " ", car_quelconque) plantera, dès lors qu'il n'y a pas d'espace dans le nom du fichier. C'est un comportement un peu étrange à mon avis.
Mais, plutôt que de traiter le cas à la volée, s'il se présente, je pencherais pour faire une passe de vérification préalable.
Dans ce genre de situation, j'utilise une méthode analogue à celle de windows. Un truc du genre (à l'extension près) : 8<-------------------- nom = nombase ndx = 0 While oFSO.FileExists(nom) ndx = ndx + 1 nom = nombase & " (" & ndx & ")" Wend 8<--------------------