OVH Cloud OVH Cloud

"Renommer" un répertoire

15 réponses
Avatar
J-Pierre
Bonjour tout le monde,

Tout est dans le titre, évidemment, y'a pas de méthode pour renommer, il faut sans doute:

1-créer un nouveau répertoire
2-déplacer les fichiers (MoveFile)
3-supprimer l'ancien répertoire

Et la doc de la méthode MoveFile de FSO est succincte, alors, si vous avez un exemple de code :-)))))

Merci
J-Pierre

Et ça a quoi à voir avec Access ? Rien, mais je suis si bien sur ce NG :-)

10 réponses

1 2
Avatar
Salut

Il y a plus simple :

Name "E:Dossier2" As "E:Dossier3"

et ça marche même quand il y a des fichiers dedans

Tu vois que tu es sur le bon groupe ;-)))

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------

"J-Pierre" a écrit dans le message de news:
Bonjour tout le monde,

Tout est dans le titre, évidemment, y'a pas de méthode pour renommer, il faut sans doute:

1-créer un nouveau répertoire
2-déplacer les fichiers (MoveFile)
3-supprimer l'ancien répertoire

Et la doc de la méthode MoveFile de FSO est succincte, alors, si vous avez un exemple de code :-)))))

Merci
J-Pierre

Et ça a quoi à voir avec Access ? Rien, mais je suis si bien sur ce NG :-)



Avatar
J-Pierre
Bonsoir Arnaud,

Crois-le ou pas, mais j'étais sûr que tu allais me répondre et me donner la solution :-))))

Et cette solution me plait, car l'autre implique de contrôler que le MoveFile s'est correctement passé avant de supprimer
l'ancien répertoire, bref, une source d'erreur.

Par contre, je ne vois pas bien..... Ce name, il sort d'où ? C'est une méthode de quel objet ? de l'objet FOLDER ?

Tu fais comme pour les débutants, tu détailles :-), après, je traduis en ASP et FSO.

Merci
J-Pierre

PS1: C'est SURTOUT quand il y a des fichiers dedans que ça doit marcher !!!!!!!!!
PS2: On peut faire beaucoup de chose avec ASP, le problème, c'est que dans la même page, MS mélange allègrement du HTML, du
DHTML, de l'ADO, du javascript, du VB.....Qui a dit usine à gaz ????????

<Anor> a écrit dans le message de news:
Salut

Il y a plus simple :

Name "E:Dossier2" As "E:Dossier3"

et ça marche même quand il y a des fichiers dedans

Tu vois que tu es sur le bon groupe ;-)))

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------

"J-Pierre" a écrit dans le message de news:
Bonjour tout le monde,

Tout est dans le titre, évidemment, y'a pas de méthode pour renommer, il faut sans doute:

1-créer un nouveau répertoire
2-déplacer les fichiers (MoveFile)
3-supprimer l'ancien répertoire

Et la doc de la méthode MoveFile de FSO est succincte, alors, si vous avez un exemple de code :-)))))

Merci
J-Pierre

Et ça a quoi à voir avec Access ? Rien, mais je suis si bien sur ce NG :-)







Avatar
re,


"J-Pierre" a écrit dans le message de news:
Bonsoir Arnaud,

Par contre, je ne vois pas bien..... Ce name, il sort d'où ? C'est une méthode de quel objet ? de l'objet FOLDER ?


c'est une fonction non documentée ;-)

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------

Avatar
J-Pierre
Oui, bien sûr, mais une fonctionde quel objet ? Ca non plus, ce n'est pas documenté ?

A+

<Anor> a écrit dans le message de news: %238%
re,


"J-Pierre" a écrit dans le message de news:
Bonsoir Arnaud,

Par contre, je ne vois pas bien..... Ce name, il sort d'où ? C'est une méthode de quel objet ? de l'objet FOLDER ?


c'est une fonction non documentée ;-)

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------





Avatar
Eric
Bonsoir J-Pierre,

C'est une instruction de VB.

<Copie de l'aide VB>:
Name, instruction
Renomme un fichier, un répertoire ou un dossier sur un disque.

Syntaxe

Name oldpathname As newpathname

La syntaxe de l'instruction Name comprend les éléments suivants :

Élément Description
oldpathname Expression de chaîne indiquant le nom et le chemin du
fichier. Cet argument peut contenir le répertoire ou dossier et le
lecteur.
newpathname Expression de chaîne indiquant les nouveaux nom et chemin du
fichier. Cet argument peut préciser le répertoire ou le dossier et le
lecteur. Le nom de fichier indiqué dans l'argument newpathname ne peut
pas correspondre à un fichier existant.


Remarques

L'instruction Name renomme un fichier et le déplace le cas échéant vers
un nouveau répertoire ou dossier. Elle permet aussi de déplacer un
fichier d'un lecteur à un autre, mais elle ne peut renommer un dossier
existant que si les arguments newpathname et oldpathname concernent le
même lecteur. L'instruction Name ne permet pas de créer un nouveau
fichier ou dossier.

Si vous appliquez Name à un fichier ouvert, vous provoquez une erreur.
Les fichiers ouverts ne peuvent être renommés avant d'avoir été fermés.
Lesarguments de Name ne peuvent comporter de caractères génériques (* :
multicaractères, ? : caractère unique).

<fin copie>

Oui, bien sûr, mais une fonctionde quel objet ? Ca non plus, ce n'est pas documenté ?

A+

<Anor> a écrit dans le message de news: %238%

re,


"J-Pierre" a écrit dans le message de news:

Bonsoir Arnaud,

Par contre, je ne vois pas bien..... Ce name, il sort d'où ? C'est une méthode de quel objet ? de l'objet FOLDER ?


c'est une fonction non documentée ;-)

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------








--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
3stone
Salut,

"J-Pierre"
| Oui, bien sûr, mais une fonctionde quel objet ? Ca non plus, ce n'est pas documenté ?

Le MS Scripting Runtime sont la variante moderne OO de ces ancêtres hérités de
quelques décénies de Basic...

Name, Dir, ChDir, ChDrive, CurDir, MkDir, RmDir, FileLen, FileCopy et quelques autres...
et quasi tous intégrés à toutes les versions.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
J-Pierre
"3stone" a écrit dans le message de news:

Le MS Scripting Runtime sont la variante moderne OO de ces ancêtres hérités de
quelques décénies de Basic...

Name, Dir, ChDir, ChDrive, CurDir, MkDir, RmDir, FileLen, FileCopy et quelques autres...
et quasi tous intégrés à toutes les versions.

Tiens, c'est vrai, ça me rappelle quelque chose ........


Merci à tous les 3, je regarde ça demain matin, z'avez vu l'heure ?
Mon dentier dans son verre d'eau, mon bonnet de nuit, mes chaussettes, il fait encore froid, et hop.....

Zzzzzzzzzzzzzzzzzzzzzzzzzzz
J-Pierre

Avatar
J-Pierre
Ca fait des heures que je cherche......Ras le bol.... Le miracle, ce serait qu'en me levant, il y ait la réponse :-))))
Dentier, bonnet, chaussettes, je suis prêt.......

Bonne nuit tout le monde
Zzzzzzzzzzzzzzzzzz
J-Pierre

Voilà le code (c'est une page ASP qui accède à une base Access, donc je suis dans le bon forum :-)

'Créer des variables contenant le nom de l'ancien et du nouveau répertoire
oSub = server.mappath("/") & APPRepClients & "" & WclientOld & ""
nSub = server.mappath("/") & APPRepClients & "" & WclientMod & ""

...Ici, je contrôle avec FSO que l'ancien rep existe et que le nouveau n'existe pas...

...Maintenant, je veux changer le nom de mon répertoire...
Name oSub As nSub

et j'ai une erreur de compilation:
_______________________________
Erreur de compilation Microsoft VBScript error '800a0401'

Fin d'instruction attendue

/xxxxxxxxxxx/yyyyyyyyyyyyyy.asp, line 173

Name oSub As nSub
----------^_________________________________
Avatar
Eric
Bonjour J-Pierre,

Pourquoi ne pas tout faire avec FSO car le As n'a pas l'air d'être
reconnu en VbScript ?
En s'inspirant de cette procédure renommant le rep OldName en NewName se
trouvant dans le répertoire Root.

Sub RenameDir(OldName, Root, NewName)
Dim fs, f
Set fs= Server.CreateObject("Scripting.filesystemobject")
If fs.FolderExists(server.mappath(Root & OldName)) then
Set f= fs.GetFolder(server.mappath(Root & OldName))
f.Name= NewName
End If
Set f = Nothing
Set fs=Nothing
End Sub

et appelée ainsi :
RenameDir "WclientOld", "/APPRepClients", "WclientMod" devrait renommer
le répertoire WclientOld situé dans APPRepClients en WclientMod

Dans ton cas, ça pourrait donner:

If fs.FolderExists(oSub) then
Set f= fs.GetFolder(oSub))
f.Name= nSub ' ***
End if

*** où nSub devrait être seulement WclientMod ( à adapter puisque tu
vérifies que ce rep n'existe pas déjà)

(Vérifier si dans oSub , il ne faudrait pas mettre des / au lieu des
et si le dernier est nécessaire)

Bonne continuation



Ca fait des heures que je cherche......Ras le bol.... Le miracle, ce serait qu'en me levant, il y ait la réponse :-))))
Dentier, bonnet, chaussettes, je suis prêt.......

Bonne nuit tout le monde
Zzzzzzzzzzzzzzzzzz
J-Pierre

Voilà le code (c'est une page ASP qui accède à une base Access, donc je suis dans le bon forum :-)

'Créer des variables contenant le nom de l'ancien et du nouveau répertoire
oSub = server.mappath("/") & APPRepClients & "" & WclientOld & ""
nSub = server.mappath("/") & APPRepClients & "" & WclientMod & ""

...Ici, je contrôle avec FSO que l'ancien rep existe et que le nouveau n'existe pas...

...Maintenant, je veux changer le nom de mon répertoire...
Name oSub As nSub

et j'ai une erreur de compilation:
_______________________________
Erreur de compilation Microsoft VBScript error '800a0401'

Fin d'instruction attendue

/xxxxxxxxxxx/yyyyyyyyyyyyyy.asp, line 173

Name oSub As nSub
----------^_________________________________




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
J-Pierre
Bonjour Eric,

Je me suis levé, le miracle avait eu lieu. Dans le cas d'une page ASP, le code est le suivant:

Set fso = CreateObject("Scripting.FileSystemObject")
root = server.mappath("/") & APPRepClients & "/" & WclientOld
Set oSub = fso.GetFolder(fso.GetAbsolutePathName(root))
On Error Resume Next
oSub.Name = WclientMod
On Error GoTo 0
....Traitement des erreurs
Err.Clear
set osub = Nothing
set fso = Nothing

Juste une remarque, cette manière de procéder permet de modifier le nom d'un sous-répertoire, pas de le déplacer sur le même
disque comme le fait
Name AncienNom As NouveauNom
il me semble que Name n'a pas d'équivalent en FSO, dans mon cas, ce n'est pas nécessaire, mais sais-tu si c'est possible ?

Merci infiniment
J-Pierre

"Eric" a écrit dans le message de news:
Bonjour J-Pierre,

Pourquoi ne pas tout faire avec FSO car le As n'a pas l'air d'être reconnu en VbScript ?
En s'inspirant de cette procédure renommant le rep OldName en NewName se trouvant dans le répertoire Root.

Sub RenameDir(OldName, Root, NewName)
Dim fs, f
Set fs= Server.CreateObject("Scripting.filesystemobject")
If fs.FolderExists(server.mappath(Root & OldName)) then
Set f= fs.GetFolder(server.mappath(Root & OldName))
f.Name= NewName
End If
Set f = Nothing
Set fs=Nothing
End Sub

et appelée ainsi :
RenameDir "WclientOld", "/APPRepClients", "WclientMod" devrait renommer le répertoire WclientOld situé dans APPRepClients en
WclientMod

Dans ton cas, ça pourrait donner:

If fs.FolderExists(oSub) then
Set f= fs.GetFolder(oSub))
f.Name= nSub ' ***
End if

*** où nSub devrait être seulement WclientMod ( à adapter puisque tu vérifies que ce rep n'existe pas déjà)

(Vérifier si dans oSub , il ne faudrait pas mettre des / au lieu des et si le dernier est nécessaire)

Bonne continuation



Ca fait des heures que je cherche......Ras le bol.... Le miracle, ce serait qu'en me levant, il y ait la réponse :-))))
Dentier, bonnet, chaussettes, je suis prêt.......

Bonne nuit tout le monde
Zzzzzzzzzzzzzzzzzz
J-Pierre

Voilà le code (c'est une page ASP qui accède à une base Access, donc je suis dans le bon forum :-)

'Créer des variables contenant le nom de l'ancien et du nouveau répertoire
oSub = server.mappath("/") & APPRepClients & "" & WclientOld & ""
nSub = server.mappath("/") & APPRepClients & "" & WclientMod & ""

...Ici, je contrôle avec FSO que l'ancien rep existe et que le nouveau n'existe pas...

...Maintenant, je veux changer le nom de mon répertoire...
Name oSub As nSub

et j'ai une erreur de compilation:
_______________________________
Erreur de compilation Microsoft VBScript error '800a0401'

Fin d'instruction attendue

/xxxxxxxxxxx/yyyyyyyyyyyyyy.asp, line 173

Name oSub As nSub
----------^_________________________________


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



1 2