-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message de
news:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:435201c47317$a9b0b9f0$a501280a@phx.gbl...
Bonjour,
J'ai un script qui copie tous les fichiers d'un répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message de
news:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message de
news:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:435201c47317$a9b0b9f0$a501280a@phx.gbl...
Bonjour,
J'ai un script qui copie tous les fichiers d'un répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message de
news:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" a écrit
dans le message de
news:41de01c4731e$82310400$
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce faittout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message denews:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
.
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:41de01c4731e$82310400$a601280a@phx.gbl...
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,
-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:435201c47317$a9b0b9f0$a501280a@phx.gbl...
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
.
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" a écrit
dans le message de
news:41de01c4731e$82310400$
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce faittout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message denews:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
.
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" a écrit
dans le message de
news:41de01c4731e$82310400$
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce faittout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message denews:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
.
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:41de01c4731e$82310400$a601280a@phx.gbl...
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,
-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:435201c47317$a9b0b9f0$a501280a@phx.gbl...
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
.
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" a écrit
dans le message de
news:41de01c4731e$82310400$
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce faittout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message denews:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
.
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" a écrit
dans le message de
news:41de01c4731e$82310400$
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce faittout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message denews:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
.
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:41de01c4731e$82310400$a601280a@phx.gbl...
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,
-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:435201c47317$a9b0b9f0$a501280a@phx.gbl...
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
.
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" a écrit
dans le message de
news:41de01c4731e$82310400$
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial et
après tout ce faittout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message denews:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que ça
intéresse.
Amicalement
Thierry
.
.
-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous ses
sous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichier
de log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFile
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)
Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,
OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""
else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &
SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1
if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""
else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Cordialement
Georges MAUREL
"Thierry" a écrit
dans le message de
news:456101c4732c$1fdbcbb0$
Mea Culpa,
J'ai vu mon erreur après ;o)
L'intruction Comp tu la trouves ou?
J'ai regardé sur le site de Jean Claude Bellamy, mais je
ne l'ai pas trouvé !! Ou ai je mal regardé plutôt.
Je cherche, et je te tiens au courrant.
Merci encore,
Amicalement
Thierry-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'aiété enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec compc:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2répertoires.
Cordialement
Georges
"Thierry" a écrit
dans le message denews:41de01c4731e$82310400$
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais
je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial
et
après tout ce faittout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message denews:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoirevers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose
mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que
ça
intéresse.
Amicalement
Thierry
.
.
.
-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous ses
sous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichier
de log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFile
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)
Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,
OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""
else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &
SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1
if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""
else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Cordialement
Georges MAUREL
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:456101c4732c$1fdbcbb0$a501280a@phx.gbl...
Mea Culpa,
J'ai vu mon erreur après ;o)
L'intruction Comp tu la trouves ou?
J'ai regardé sur le site de Jean Claude Bellamy, mais je
ne l'ai pas trouvé !! Ou ai je mal regardé plutôt.
Je cherche, et je te tiens au courrant.
Merci encore,
Amicalement
Thierry
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:41de01c4731e$82310400$a601280a@phx.gbl...
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais
je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,
-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial
et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:435201c47317$a9b0b9f0$a501280a@phx.gbl...
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose
mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que
ça
intéresse.
Amicalement
Thierry
.
.
.
-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous ses
sous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichier
de log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFile
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)
Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,
OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""
else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &
SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1
if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""
else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Cordialement
Georges MAUREL
"Thierry" a écrit
dans le message de
news:456101c4732c$1fdbcbb0$
Mea Culpa,
J'ai vu mon erreur après ;o)
L'intruction Comp tu la trouves ou?
J'ai regardé sur le site de Jean Claude Bellamy, mais je
ne l'ai pas trouvé !! Ou ai je mal regardé plutôt.
Je cherche, et je te tiens au courrant.
Merci encore,
Amicalement
Thierry-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'aiété enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec compc:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2répertoires.
Cordialement
Georges
"Thierry" a écrit
dans le message denews:41de01c4731e$82310400$
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais
je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial
et
après tout ce faittout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message denews:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoirevers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose
mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que
ça
intéresse.
Amicalement
Thierry
.
.
.
-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous ses
sous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichier
de log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFile
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)
Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,
OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""
else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &
SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1
if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""
else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Cordialement
Georges MAUREL
"Thierry" a écrit
dans le message de
news:456101c4732c$1fdbcbb0$
Mea Culpa,
J'ai vu mon erreur après ;o)
L'intruction Comp tu la trouves ou?
J'ai regardé sur le site de Jean Claude Bellamy, mais je
ne l'ai pas trouvé !! Ou ai je mal regardé plutôt.
Je cherche, et je te tiens au courrant.
Merci encore,
Amicalement
Thierry-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'aiété enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec compc:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2répertoires.
Cordialement
Georges
"Thierry" a écrit
dans le message denews:41de01c4731e$82310400$
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais
je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial
et
après tout ce faittout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message denews:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoirevers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose
mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que
ça
intéresse.
Amicalement
Thierry
.
.
.
-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous ses
sous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichier
de log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFile
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)
Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,
OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""
else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &
SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1
if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""
else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Cordialement
Georges MAUREL
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:456101c4732c$1fdbcbb0$a501280a@phx.gbl...
Mea Culpa,
J'ai vu mon erreur après ;o)
L'intruction Comp tu la trouves ou?
J'ai regardé sur le site de Jean Claude Bellamy, mais je
ne l'ai pas trouvé !! Ou ai je mal regardé plutôt.
Je cherche, et je te tiens au courrant.
Merci encore,
Amicalement
Thierry
-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'ai
été enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec comp
c:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2
répertoires.
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:41de01c4731e$82310400$a601280a@phx.gbl...
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais
je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,
-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial
et
après tout ce fait
tout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:435201c47317$a9b0b9f0$a501280a@phx.gbl...
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoire
vers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose
mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que
ça
intéresse.
Amicalement
Thierry
.
.
.
-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous ses
sous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichier
de log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFile
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)
Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,
OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""
else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &
SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1
if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""
else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Cordialement
Georges MAUREL
"Thierry" a écrit
dans le message de
news:456101c4732c$1fdbcbb0$
Mea Culpa,
J'ai vu mon erreur après ;o)
L'intruction Comp tu la trouves ou?
J'ai regardé sur le site de Jean Claude Bellamy, mais je
ne l'ai pas trouvé !! Ou ai je mal regardé plutôt.
Je cherche, et je te tiens au courrant.
Merci encore,
Amicalement
Thierry-----Message d'origine-----
Re salut Thierry
Désolé mais comme tu avais noté copy /i... dans ton
message original j'aiété enduit d'erreur...
Sinon, tu peux utilise copyfolder de la façon suivante
**********************
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
MsgBox "Répertoire incorrect" + sauvegarde
WScript.Quit
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Copy d un répertoire vers un autre
set fso = Createobject("Scripting.FileSystemObject")
fso.CopyFolder asauver, sauvegarde
wscript.quit
***********************
Il ne te reste plus qu'à comparer le contenu de tes 2
répertoires (avec compc:temp c:test >> monlog.log) ou en faisant une liste
récusive des 2répertoires.
Cordialement
Georges
"Thierry" a écrit
dans le message denews:41de01c4731e$82310400$
Bonjour,
C'est bien xcopy que j'utilise à l'heure actuelle, mais
je
souhaite passer tout ceci en vbscript.
;o)
Amicalement
Thierry,-----Message d'origine-----
Salut Thierry
Pourquoi n'utilises-tu pas xcopy ? Dans ce cas tu aurais
xcopy /i /e /s /y c:Temp c:Test>>MonLog.log
Il te suffit juste de créer le répertoire test initial
et
après tout ce faittout seul et tu as ton fichier log qui se remplit
Cordialement
Georges
"Thierry" a écrit
dans le message denews:435201c47317$a9b0b9f0$
Bonjour,
J'ai un script qui copie tous les fichiers d'un
répertoirevers un autre.
Ca fonctionne, le seul soucis, c'est que je n'ai aucune
trace de la copie.
Autrement dit, sous ms-dos, j'avais une trace de chaque
fichier, ici, je n'ai rien.
Je souhaite avoir une trace de chaque fichier copier.
J'utilise CopyFile, y a t'il un moyen de faire cela.
J'ai essayé autremet, en utilisant copy, dans ce cas je
récupère le nom de mon fichier, mais si ma destination
n'existe pas, il ne la créé pas, et puis il me dépose
mes
fichier en vrac, je souhaite conserver mon arborescence.
En clair, je souhaite un:
copy /i /e /s /y c:Temp c:Test>>MonLog.log
Avez vous des idées.
J'ai des pistes mais rien de bien génial pour ceux que
ça
intéresse.
Amicalement
Thierry
.
.
.
Bonjour,
Sans vouloir me vanter, mon code, même s'il n'est pas le top du top
non plus, me semble plus simple et moins long du fait de l'emploi
d'une fonction récursive. Mais c'est toi qui voit ce qui te semble le
plus intéressant pour toi. J'espère que cela te donnera des pistes
pour finaliser ton code.
Cordialement
Georges
"Thierry" a écrit dans le
message de news:594f01c4748c$e35fdb10$
Bonjour,
Merci pour ta réponse complète.
J'ai trouvé entre temps un code, je ne sais pas si c'est
vraiment le top du top, mais ça marche aussi.
Je garde le tiens en mémoire quant même.
Voici le mien:
Const overWrite = true
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
strComputer = "."
' Déclaration des variables de condition
strJour = Left(Date(),2)
strDate = DateAdd("m",-1,Date())
strMois = (Mid(strDate,4,2))
'--------------------------------------
' Définition des chemins
' Répertoire du scipt exécuté
strScript = "C:Temp"
strSrc = "C:Temp" ' Répertoire des sources à copier
strDest = "C:Test" ' Répertoire de destination
strMdbSrc = strSrc & "Toto" ' Répertoire des bases de
données
strMdbHist = strSrc & "HistoDataBase" & strJour '
Répertoire HistoDataBase
' Définition des journaux
strLogProc = strScript & "Traitement.log"
strLogFile = strScript & "SBURCopie.log"
strChemin = ""
' Création d'un nouveau journal chaque 1er de chaque mois
If strJour = 01 Then
Set CopieFile = objFSO.GetFile(strScript & strLogProc)
CopieFile.Copy (strDest & "" & strMois & strLogProc)
CopieFile.Delete
End if
Set strProcLog = objFSO.OpenTextFile(strLogProc,
ForAppending, True)
Set strFileLog = objFSO.OpenTextFile(strLogFile,
ForWriting, True)
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteLine "Le : " & Now()
strProcLog.WriteBlankLines 1
strProcLog.WriteLine "Sauvegarde des Bases de Données vers
le répertoire HistoDataBase"
strProcLog.WriteBlankLines 1
If (objFSO.FolderExists(strDest)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest)
CreaFolderDemo = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : " &
strDest
End if
objFSO.CopyFolder strMdbSrc, strMdbHist, OverWrite
If Err = 76 Then
strObj = "Erreur dans la copie de sauvegarde"
strBody = "Une erreur s'est produite dans la copie du
répertoire de prodution vers le répertoire historique."
EnvoiMail
End if
Set objWMIService = GetObject("winmgmts:"
& "{impersonationLevel=impersonate}!" & strComputer
& "rootcimv2")
Set colSubfolders = objWMIService.ExecQuery("Associators
of {Win32_Directory.Name='" & strSrc & "'} " & "Where
AssocClass = Win32_Subdirectory " & "ResultRole > PartComponent")
strProcLog.WriteLine "Sauvegarde du Disque D: INTRANET
vers SBUR"
strProcLog.WriteBlankLines 1
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest &
strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : "
& strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc & strChemin
& "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier
(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun fichier
copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
Sousrep
Next
Set objfilesRep = ObjFso.GetFolder(strSrc)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(objFilesRep.Name)
CopieFile.Copy (strDest & "" & objFilesRep.Name)
strName = strName & strSrc & "" & objFilesRep.Name
& vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier(s) copié
(s)." & vbCrLf
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc & strChemin & vbcrLf & vbTab & NbFile & " fichier
(s) copié(s)."
Else
strFileLog.WriteLine vbTab & "Auncun fichier copié." &
vbCrLf
End if
strProcLog.WriteLine "Fin de la procédure le : " & Now()
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteBlankLines 1
strProcLog.Close
If Err = 76 Then
strObj = "Erreur dans la copie vers SBUR"
strBody = "Une erreur s'est produite dans la sauvegarde
d'INTRANET vers SBUR."
EnvoiMail
End if
MsgBox "Fin de la procédure de
réplication.",4160,"Terminé !"
'----------------------------------------------------------
--------------
Function CreateFolder
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateFolder(valeurA)
CreateFolderDemo = f.Path
End function
Function SousRep
strChemin = ""
If strTmp = objFolder.Name Then
exit Function
Else
Set colSubfolders = objWMIService.ExecQuery
("Associators of {Win32_Directory.Name='" & objFolder.Name
& "'} " & "Where AssocClass = Win32_Subdirectory "
& "ResultRole = PartComponent")
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin))
Then
Else
Set CreaFold = objFSO.CreateFolder(strDest
& strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du
Répertoire : " & strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc &
strChemin & "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & "
fichier(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun
fichier copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
SousRep
Next
End if
End Function
Pas forcément tout complet et avec gestion de toutes les
erreurs, mais il semble fonctionner :o)
Amicalement
Thierry-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous sessous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichierde log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFileConst ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Sans compter que ce code est plein d'approximations :
Bonjour,
Sans vouloir me vanter, mon code, même s'il n'est pas le top du top
non plus, me semble plus simple et moins long du fait de l'emploi
d'une fonction récursive. Mais c'est toi qui voit ce qui te semble le
plus intéressant pour toi. J'espère que cela te donnera des pistes
pour finaliser ton code.
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit dans le
message de news:594f01c4748c$e35fdb10$a301280a@phx.gbl...
Bonjour,
Merci pour ta réponse complète.
J'ai trouvé entre temps un code, je ne sais pas si c'est
vraiment le top du top, mais ça marche aussi.
Je garde le tiens en mémoire quant même.
Voici le mien:
Const overWrite = true
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
strComputer = "."
' Déclaration des variables de condition
strJour = Left(Date(),2)
strDate = DateAdd("m",-1,Date())
strMois = (Mid(strDate,4,2))
'--------------------------------------
' Définition des chemins
' Répertoire du scipt exécuté
strScript = "C:Temp"
strSrc = "C:Temp" ' Répertoire des sources à copier
strDest = "C:Test" ' Répertoire de destination
strMdbSrc = strSrc & "Toto" ' Répertoire des bases de
données
strMdbHist = strSrc & "HistoDataBase" & strJour '
Répertoire HistoDataBase
' Définition des journaux
strLogProc = strScript & "Traitement.log"
strLogFile = strScript & "SBURCopie.log"
strChemin = ""
' Création d'un nouveau journal chaque 1er de chaque mois
If strJour = 01 Then
Set CopieFile = objFSO.GetFile(strScript & strLogProc)
CopieFile.Copy (strDest & "" & strMois & strLogProc)
CopieFile.Delete
End if
Set strProcLog = objFSO.OpenTextFile(strLogProc,
ForAppending, True)
Set strFileLog = objFSO.OpenTextFile(strLogFile,
ForWriting, True)
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteLine "Le : " & Now()
strProcLog.WriteBlankLines 1
strProcLog.WriteLine "Sauvegarde des Bases de Données vers
le répertoire HistoDataBase"
strProcLog.WriteBlankLines 1
If (objFSO.FolderExists(strDest)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest)
CreaFolderDemo = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : " &
strDest
End if
objFSO.CopyFolder strMdbSrc, strMdbHist, OverWrite
If Err = 76 Then
strObj = "Erreur dans la copie de sauvegarde"
strBody = "Une erreur s'est produite dans la copie du
répertoire de prodution vers le répertoire historique."
EnvoiMail
End if
Set objWMIService = GetObject("winmgmts:"
& "{impersonationLevel=impersonate}!\" & strComputer
& "rootcimv2")
Set colSubfolders = objWMIService.ExecQuery("Associators
of {Win32_Directory.Name='" & strSrc & "'} " & "Where
AssocClass = Win32_Subdirectory " & "ResultRole > PartComponent")
strProcLog.WriteLine "Sauvegarde du Disque D: INTRANET
vers SBUR"
strProcLog.WriteBlankLines 1
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest &
strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : "
& strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc & strChemin
& "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier
(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun fichier
copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
Sousrep
Next
Set objfilesRep = ObjFso.GetFolder(strSrc)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(objFilesRep.Name)
CopieFile.Copy (strDest & "" & objFilesRep.Name)
strName = strName & strSrc & "" & objFilesRep.Name
& vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier(s) copié
(s)." & vbCrLf
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc & strChemin & vbcrLf & vbTab & NbFile & " fichier
(s) copié(s)."
Else
strFileLog.WriteLine vbTab & "Auncun fichier copié." &
vbCrLf
End if
strProcLog.WriteLine "Fin de la procédure le : " & Now()
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteBlankLines 1
strProcLog.Close
If Err = 76 Then
strObj = "Erreur dans la copie vers SBUR"
strBody = "Une erreur s'est produite dans la sauvegarde
d'INTRANET vers SBUR."
EnvoiMail
End if
MsgBox "Fin de la procédure de
réplication.",4160,"Terminé !"
'----------------------------------------------------------
--------------
Function CreateFolder
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateFolder(valeurA)
CreateFolderDemo = f.Path
End function
Function SousRep
strChemin = ""
If strTmp = objFolder.Name Then
exit Function
Else
Set colSubfolders = objWMIService.ExecQuery
("Associators of {Win32_Directory.Name='" & objFolder.Name
& "'} " & "Where AssocClass = Win32_Subdirectory "
& "ResultRole = PartComponent")
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin))
Then
Else
Set CreaFold = objFSO.CreateFolder(strDest
& strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du
Répertoire : " & strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc &
strChemin & "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & "
fichier(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun
fichier copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
SousRep
Next
End if
End Function
Pas forcément tout complet et avec gestion de toutes les
erreurs, mais il semble fonctionner :o)
Amicalement
Thierry
-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous ses
sous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichier
de log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFile
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)
Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,
OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""
else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &
SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1
if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""
else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Sans compter que ce code est plein d'approximations :
Bonjour,
Sans vouloir me vanter, mon code, même s'il n'est pas le top du top
non plus, me semble plus simple et moins long du fait de l'emploi
d'une fonction récursive. Mais c'est toi qui voit ce qui te semble le
plus intéressant pour toi. J'espère que cela te donnera des pistes
pour finaliser ton code.
Cordialement
Georges
"Thierry" a écrit dans le
message de news:594f01c4748c$e35fdb10$
Bonjour,
Merci pour ta réponse complète.
J'ai trouvé entre temps un code, je ne sais pas si c'est
vraiment le top du top, mais ça marche aussi.
Je garde le tiens en mémoire quant même.
Voici le mien:
Const overWrite = true
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
strComputer = "."
' Déclaration des variables de condition
strJour = Left(Date(),2)
strDate = DateAdd("m",-1,Date())
strMois = (Mid(strDate,4,2))
'--------------------------------------
' Définition des chemins
' Répertoire du scipt exécuté
strScript = "C:Temp"
strSrc = "C:Temp" ' Répertoire des sources à copier
strDest = "C:Test" ' Répertoire de destination
strMdbSrc = strSrc & "Toto" ' Répertoire des bases de
données
strMdbHist = strSrc & "HistoDataBase" & strJour '
Répertoire HistoDataBase
' Définition des journaux
strLogProc = strScript & "Traitement.log"
strLogFile = strScript & "SBURCopie.log"
strChemin = ""
' Création d'un nouveau journal chaque 1er de chaque mois
If strJour = 01 Then
Set CopieFile = objFSO.GetFile(strScript & strLogProc)
CopieFile.Copy (strDest & "" & strMois & strLogProc)
CopieFile.Delete
End if
Set strProcLog = objFSO.OpenTextFile(strLogProc,
ForAppending, True)
Set strFileLog = objFSO.OpenTextFile(strLogFile,
ForWriting, True)
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteLine "Le : " & Now()
strProcLog.WriteBlankLines 1
strProcLog.WriteLine "Sauvegarde des Bases de Données vers
le répertoire HistoDataBase"
strProcLog.WriteBlankLines 1
If (objFSO.FolderExists(strDest)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest)
CreaFolderDemo = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : " &
strDest
End if
objFSO.CopyFolder strMdbSrc, strMdbHist, OverWrite
If Err = 76 Then
strObj = "Erreur dans la copie de sauvegarde"
strBody = "Une erreur s'est produite dans la copie du
répertoire de prodution vers le répertoire historique."
EnvoiMail
End if
Set objWMIService = GetObject("winmgmts:"
& "{impersonationLevel=impersonate}!" & strComputer
& "rootcimv2")
Set colSubfolders = objWMIService.ExecQuery("Associators
of {Win32_Directory.Name='" & strSrc & "'} " & "Where
AssocClass = Win32_Subdirectory " & "ResultRole > PartComponent")
strProcLog.WriteLine "Sauvegarde du Disque D: INTRANET
vers SBUR"
strProcLog.WriteBlankLines 1
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest &
strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : "
& strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc & strChemin
& "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier
(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun fichier
copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
Sousrep
Next
Set objfilesRep = ObjFso.GetFolder(strSrc)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(objFilesRep.Name)
CopieFile.Copy (strDest & "" & objFilesRep.Name)
strName = strName & strSrc & "" & objFilesRep.Name
& vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier(s) copié
(s)." & vbCrLf
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc & strChemin & vbcrLf & vbTab & NbFile & " fichier
(s) copié(s)."
Else
strFileLog.WriteLine vbTab & "Auncun fichier copié." &
vbCrLf
End if
strProcLog.WriteLine "Fin de la procédure le : " & Now()
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteBlankLines 1
strProcLog.Close
If Err = 76 Then
strObj = "Erreur dans la copie vers SBUR"
strBody = "Une erreur s'est produite dans la sauvegarde
d'INTRANET vers SBUR."
EnvoiMail
End if
MsgBox "Fin de la procédure de
réplication.",4160,"Terminé !"
'----------------------------------------------------------
--------------
Function CreateFolder
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateFolder(valeurA)
CreateFolderDemo = f.Path
End function
Function SousRep
strChemin = ""
If strTmp = objFolder.Name Then
exit Function
Else
Set colSubfolders = objWMIService.ExecQuery
("Associators of {Win32_Directory.Name='" & objFolder.Name
& "'} " & "Where AssocClass = Win32_Subdirectory "
& "ResultRole = PartComponent")
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin))
Then
Else
Set CreaFold = objFSO.CreateFolder(strDest
& strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du
Répertoire : " & strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc &
strChemin & "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & "
fichier(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun
fichier copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
SousRep
Next
End if
End Function
Pas forcément tout complet et avec gestion de toutes les
erreurs, mais il semble fonctionner :o)
Amicalement
Thierry-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous sessous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichierde log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFileConst ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Sans compter que ce code est plein d'approximations :
Georges MAUREL wrote:Bonjour,
Sans vouloir me vanter, mon code, même s'il n'est pas le top du top
non plus, me semble plus simple et moins long du fait de l'emploi
d'une fonction récursive. Mais c'est toi qui voit ce qui te semble le
plus intéressant pour toi. J'espère que cela te donnera des pistes
pour finaliser ton code.
Cordialement
Georges
"Thierry" a écrit dans le
message de news:594f01c4748c$e35fdb10$
Bonjour,
Merci pour ta réponse complète.
J'ai trouvé entre temps un code, je ne sais pas si c'est
vraiment le top du top, mais ça marche aussi.
Je garde le tiens en mémoire quant même.
Voici le mien:
Const overWrite = true
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
strComputer = "."
' Déclaration des variables de condition
strJour = Left(Date(),2)
strDate = DateAdd("m",-1,Date())
strMois = (Mid(strDate,4,2))
'--------------------------------------
' Définition des chemins
' Répertoire du scipt exécuté
strScript = "C:Temp"
strSrc = "C:Temp" ' Répertoire des sources à copier
strDest = "C:Test" ' Répertoire de destination
strMdbSrc = strSrc & "Toto" ' Répertoire des bases de
données
strMdbHist = strSrc & "HistoDataBase" & strJour '
Répertoire HistoDataBase
' Définition des journaux
strLogProc = strScript & "Traitement.log"
strLogFile = strScript & "SBURCopie.log"
strChemin = ""
' Création d'un nouveau journal chaque 1er de chaque mois
If strJour = 01 Then
Set CopieFile = objFSO.GetFile(strScript & strLogProc)
CopieFile.Copy (strDest & "" & strMois & strLogProc)
CopieFile.Delete
End if
Set strProcLog = objFSO.OpenTextFile(strLogProc,
ForAppending, True)
Set strFileLog = objFSO.OpenTextFile(strLogFile,
ForWriting, True)
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteLine "Le : " & Now()
strProcLog.WriteBlankLines 1
strProcLog.WriteLine "Sauvegarde des Bases de Données vers
le répertoire HistoDataBase"
strProcLog.WriteBlankLines 1
If (objFSO.FolderExists(strDest)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest)
CreaFolderDemo = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : " &
strDest
End if
objFSO.CopyFolder strMdbSrc, strMdbHist, OverWrite
If Err = 76 Then
strObj = "Erreur dans la copie de sauvegarde"
strBody = "Une erreur s'est produite dans la copie du
répertoire de prodution vers le répertoire historique."
EnvoiMail
End if
Set objWMIService = GetObject("winmgmts:"
& "{impersonationLevel=impersonate}!" & strComputer
& "rootcimv2")
Set colSubfolders = objWMIService.ExecQuery("Associators
of {Win32_Directory.Name='" & strSrc & "'} " & "Where
AssocClass = Win32_Subdirectory " & "ResultRole > > PartComponent")
strProcLog.WriteLine "Sauvegarde du Disque D: INTRANET
vers SBUR"
strProcLog.WriteBlankLines 1
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest &
strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : "
& strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc & strChemin
& "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier
(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun fichier
copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
Sousrep
Next
Set objfilesRep = ObjFso.GetFolder(strSrc)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(objFilesRep.Name)
CopieFile.Copy (strDest & "" & objFilesRep.Name)
strName = strName & strSrc & "" & objFilesRep.Name
& vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier(s) copié
(s)." & vbCrLf
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc & strChemin & vbcrLf & vbTab & NbFile & " fichier
(s) copié(s)."
Else
strFileLog.WriteLine vbTab & "Auncun fichier copié." &
vbCrLf
End if
strProcLog.WriteLine "Fin de la procédure le : " & Now()
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteBlankLines 1
strProcLog.Close
If Err = 76 Then
strObj = "Erreur dans la copie vers SBUR"
strBody = "Une erreur s'est produite dans la sauvegarde
d'INTRANET vers SBUR."
EnvoiMail
End if
MsgBox "Fin de la procédure de
réplication.",4160,"Terminé !"
'----------------------------------------------------------
--------------
Function CreateFolder
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateFolder(valeurA)
CreateFolderDemo = f.Path
End function
Function SousRep
strChemin = ""
If strTmp = objFolder.Name Then
exit Function
Else
Set colSubfolders = objWMIService.ExecQuery
("Associators of {Win32_Directory.Name='" & objFolder.Name
& "'} " & "Where AssocClass = Win32_Subdirectory "
& "ResultRole = PartComponent")
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin))
Then
Else
Set CreaFold = objFSO.CreateFolder(strDest
& strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du
Répertoire : " & strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc &
strChemin & "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & "
fichier(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun
fichier copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
SousRep
Next
End if
End Function
Pas forcément tout complet et avec gestion de toutes les
erreurs, mais il semble fonctionner :o)
Amicalement
Thierry-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous sessous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichierde log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFileConst ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Sans compter que ce code est plein d'approximations :
strJour = Left(Date(),2) ' Retourne une CHAINE de 2 caractères
If strJour = 01 Then ' evalue un nombre
Aurait dû être strJour = Day(Date()) ' Retourne un nombre entre 1 et 31
Ou alors If strJour = "01"
Au lieu d'utiliser des WriteBlankLines 1 il est plus efficace de mettre un
vbCrLf en fin de chaine
Comme il n'y a pas de On Error Resume Next la ligne If Err = 76 ne sera
jamais atteinte
Cosmétique, mail manque un antislash ici D: INTRANET
L'usage de + au lieu du caractère normal de concaténation de chaine peut
produire des résultats surprenants
Etc...
Me fait penser à du copier/coller de différentes sources ?
Georges MAUREL wrote:
Bonjour,
Sans vouloir me vanter, mon code, même s'il n'est pas le top du top
non plus, me semble plus simple et moins long du fait de l'emploi
d'une fonction récursive. Mais c'est toi qui voit ce qui te semble le
plus intéressant pour toi. J'espère que cela te donnera des pistes
pour finaliser ton code.
Cordialement
Georges
"Thierry" <anonymous@discussions.microsoft.com> a écrit dans le
message de news:594f01c4748c$e35fdb10$a301280a@phx.gbl...
Bonjour,
Merci pour ta réponse complète.
J'ai trouvé entre temps un code, je ne sais pas si c'est
vraiment le top du top, mais ça marche aussi.
Je garde le tiens en mémoire quant même.
Voici le mien:
Const overWrite = true
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
strComputer = "."
' Déclaration des variables de condition
strJour = Left(Date(),2)
strDate = DateAdd("m",-1,Date())
strMois = (Mid(strDate,4,2))
'--------------------------------------
' Définition des chemins
' Répertoire du scipt exécuté
strScript = "C:Temp"
strSrc = "C:Temp" ' Répertoire des sources à copier
strDest = "C:Test" ' Répertoire de destination
strMdbSrc = strSrc & "Toto" ' Répertoire des bases de
données
strMdbHist = strSrc & "HistoDataBase" & strJour '
Répertoire HistoDataBase
' Définition des journaux
strLogProc = strScript & "Traitement.log"
strLogFile = strScript & "SBURCopie.log"
strChemin = ""
' Création d'un nouveau journal chaque 1er de chaque mois
If strJour = 01 Then
Set CopieFile = objFSO.GetFile(strScript & strLogProc)
CopieFile.Copy (strDest & "" & strMois & strLogProc)
CopieFile.Delete
End if
Set strProcLog = objFSO.OpenTextFile(strLogProc,
ForAppending, True)
Set strFileLog = objFSO.OpenTextFile(strLogFile,
ForWriting, True)
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteLine "Le : " & Now()
strProcLog.WriteBlankLines 1
strProcLog.WriteLine "Sauvegarde des Bases de Données vers
le répertoire HistoDataBase"
strProcLog.WriteBlankLines 1
If (objFSO.FolderExists(strDest)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest)
CreaFolderDemo = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : " &
strDest
End if
objFSO.CopyFolder strMdbSrc, strMdbHist, OverWrite
If Err = 76 Then
strObj = "Erreur dans la copie de sauvegarde"
strBody = "Une erreur s'est produite dans la copie du
répertoire de prodution vers le répertoire historique."
EnvoiMail
End if
Set objWMIService = GetObject("winmgmts:"
& "{impersonationLevel=impersonate}!\" & strComputer
& "rootcimv2")
Set colSubfolders = objWMIService.ExecQuery("Associators
of {Win32_Directory.Name='" & strSrc & "'} " & "Where
AssocClass = Win32_Subdirectory " & "ResultRole > > PartComponent")
strProcLog.WriteLine "Sauvegarde du Disque D: INTRANET
vers SBUR"
strProcLog.WriteBlankLines 1
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest &
strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : "
& strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc & strChemin
& "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier
(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun fichier
copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
Sousrep
Next
Set objfilesRep = ObjFso.GetFolder(strSrc)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(objFilesRep.Name)
CopieFile.Copy (strDest & "" & objFilesRep.Name)
strName = strName & strSrc & "" & objFilesRep.Name
& vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier(s) copié
(s)." & vbCrLf
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc & strChemin & vbcrLf & vbTab & NbFile & " fichier
(s) copié(s)."
Else
strFileLog.WriteLine vbTab & "Auncun fichier copié." &
vbCrLf
End if
strProcLog.WriteLine "Fin de la procédure le : " & Now()
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteBlankLines 1
strProcLog.Close
If Err = 76 Then
strObj = "Erreur dans la copie vers SBUR"
strBody = "Une erreur s'est produite dans la sauvegarde
d'INTRANET vers SBUR."
EnvoiMail
End if
MsgBox "Fin de la procédure de
réplication.",4160,"Terminé !"
'----------------------------------------------------------
--------------
Function CreateFolder
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateFolder(valeurA)
CreateFolderDemo = f.Path
End function
Function SousRep
strChemin = ""
If strTmp = objFolder.Name Then
exit Function
Else
Set colSubfolders = objWMIService.ExecQuery
("Associators of {Win32_Directory.Name='" & objFolder.Name
& "'} " & "Where AssocClass = Win32_Subdirectory "
& "ResultRole = PartComponent")
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin))
Then
Else
Set CreaFold = objFSO.CreateFolder(strDest
& strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du
Répertoire : " & strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc &
strChemin & "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & "
fichier(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun
fichier copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
SousRep
Next
End if
End Function
Pas forcément tout complet et avec gestion de toutes les
erreurs, mais il semble fonctionner :o)
Amicalement
Thierry
-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous ses
sous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichier
de log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFile
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)
Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,
OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""
else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &
SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1
if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""
else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Sans compter que ce code est plein d'approximations :
strJour = Left(Date(),2) ' Retourne une CHAINE de 2 caractères
If strJour = 01 Then ' evalue un nombre
Aurait dû être strJour = Day(Date()) ' Retourne un nombre entre 1 et 31
Ou alors If strJour = "01"
Au lieu d'utiliser des WriteBlankLines 1 il est plus efficace de mettre un
vbCrLf en fin de chaine
Comme il n'y a pas de On Error Resume Next la ligne If Err = 76 ne sera
jamais atteinte
Cosmétique, mail manque un antislash ici D: INTRANET
L'usage de + au lieu du caractère normal de concaténation de chaine peut
produire des résultats surprenants
Etc...
Me fait penser à du copier/coller de différentes sources ?
Georges MAUREL wrote:Bonjour,
Sans vouloir me vanter, mon code, même s'il n'est pas le top du top
non plus, me semble plus simple et moins long du fait de l'emploi
d'une fonction récursive. Mais c'est toi qui voit ce qui te semble le
plus intéressant pour toi. J'espère que cela te donnera des pistes
pour finaliser ton code.
Cordialement
Georges
"Thierry" a écrit dans le
message de news:594f01c4748c$e35fdb10$
Bonjour,
Merci pour ta réponse complète.
J'ai trouvé entre temps un code, je ne sais pas si c'est
vraiment le top du top, mais ça marche aussi.
Je garde le tiens en mémoire quant même.
Voici le mien:
Const overWrite = true
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
strComputer = "."
' Déclaration des variables de condition
strJour = Left(Date(),2)
strDate = DateAdd("m",-1,Date())
strMois = (Mid(strDate,4,2))
'--------------------------------------
' Définition des chemins
' Répertoire du scipt exécuté
strScript = "C:Temp"
strSrc = "C:Temp" ' Répertoire des sources à copier
strDest = "C:Test" ' Répertoire de destination
strMdbSrc = strSrc & "Toto" ' Répertoire des bases de
données
strMdbHist = strSrc & "HistoDataBase" & strJour '
Répertoire HistoDataBase
' Définition des journaux
strLogProc = strScript & "Traitement.log"
strLogFile = strScript & "SBURCopie.log"
strChemin = ""
' Création d'un nouveau journal chaque 1er de chaque mois
If strJour = 01 Then
Set CopieFile = objFSO.GetFile(strScript & strLogProc)
CopieFile.Copy (strDest & "" & strMois & strLogProc)
CopieFile.Delete
End if
Set strProcLog = objFSO.OpenTextFile(strLogProc,
ForAppending, True)
Set strFileLog = objFSO.OpenTextFile(strLogFile,
ForWriting, True)
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteLine "Le : " & Now()
strProcLog.WriteBlankLines 1
strProcLog.WriteLine "Sauvegarde des Bases de Données vers
le répertoire HistoDataBase"
strProcLog.WriteBlankLines 1
If (objFSO.FolderExists(strDest)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest)
CreaFolderDemo = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : " &
strDest
End if
objFSO.CopyFolder strMdbSrc, strMdbHist, OverWrite
If Err = 76 Then
strObj = "Erreur dans la copie de sauvegarde"
strBody = "Une erreur s'est produite dans la copie du
répertoire de prodution vers le répertoire historique."
EnvoiMail
End if
Set objWMIService = GetObject("winmgmts:"
& "{impersonationLevel=impersonate}!" & strComputer
& "rootcimv2")
Set colSubfolders = objWMIService.ExecQuery("Associators
of {Win32_Directory.Name='" & strSrc & "'} " & "Where
AssocClass = Win32_Subdirectory " & "ResultRole > > PartComponent")
strProcLog.WriteLine "Sauvegarde du Disque D: INTRANET
vers SBUR"
strProcLog.WriteBlankLines 1
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin)) Then
Else
Set CreaFold = objFSO.CreateFolder(strDest &
strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du Répertoire : "
& strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc & strChemin
& "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier
(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun fichier
copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
Sousrep
Next
Set objfilesRep = ObjFso.GetFolder(strSrc)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(objFilesRep.Name)
CopieFile.Copy (strDest & "" & objFilesRep.Name)
strName = strName & strSrc & "" & objFilesRep.Name
& vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & " fichier(s) copié
(s)." & vbCrLf
strFileLog.WriteLine "Sauvegarde du Répertoire : " &
strSrc & strChemin & vbcrLf & vbTab & NbFile & " fichier
(s) copié(s)."
Else
strFileLog.WriteLine vbTab & "Auncun fichier copié." &
vbCrLf
End if
strProcLog.WriteLine "Fin de la procédure le : " & Now()
strProcLog.WriteLine "*************************************
*********************************"
strProcLog.WriteBlankLines 1
strProcLog.Close
If Err = 76 Then
strObj = "Erreur dans la copie vers SBUR"
strBody = "Une erreur s'est produite dans la sauvegarde
d'INTRANET vers SBUR."
EnvoiMail
End if
MsgBox "Fin de la procédure de
réplication.",4160,"Terminé !"
'----------------------------------------------------------
--------------
Function CreateFolder
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateFolder(valeurA)
CreateFolderDemo = f.Path
End function
Function SousRep
strChemin = ""
If strTmp = objFolder.Name Then
exit Function
Else
Set colSubfolders = objWMIService.ExecQuery
("Associators of {Win32_Directory.Name='" & objFolder.Name
& "'} " & "Where AssocClass = Win32_Subdirectory "
& "ResultRole = PartComponent")
For Each objFolder in colSubfolders
NbCar = Len(objFolder.Name) - 3
Result = Right(objFolder.Name, NbCar)
NomRep = Split(Result,"",-1,1)
ValMax = Ubound(NomRep)
For i=1 to ValMax
strChemin = strChemin + "" + NomRep(i)
If (objFSO.FolderExists(strDest & strchemin))
Then
Else
Set CreaFold = objFSO.CreateFolder(strDest
& strChemin)
CreaFolder = CreaFold.Path
strFileLog.WriteLine "Création du
Répertoire : " & strDest & strChemin
End if
Set objfilesRep = ObjFso.GetFolder(strSrc &
strChemin)
Set ColFilesRep = objfilesRep.files
strFileLog.WriteLine "Sauvegarde du
Répertoire : " & strSrc & strChemin
For Each objFilesRep in ColFilesRep
NbFile = NbFile + 1
Set CopieFile = objFSO.GetFile(strSrc &
strChemin & "" & objFilesRep.Name)
CopieFile.Copy (strDest & strChemin & "" &
objFilesRep.Name)
strName = strName & strSrc & "" &
objFilesRep.Name & vbCrLf
Next
If NbFile > 0 Then
strFileLog.WriteLine strName
strFileLog.WriteLine vbTab & NbFile & "
fichier(s) copié(s)." & vbCrLf
Else
strFileLog.WriteLine vbTab & "Auncun
fichier copié." & vbCrLf
End if
NbFile = 0
strName = ""
Next
SousRep
Next
End if
End Function
Pas forcément tout complet et avec gestion de toutes les
erreurs, mais il semble fonctionner :o)
Amicalement
Thierry-----Message d'origine-----
Bonjour
Voici le code te permettant de copier un répertoire avec
tous sessous-répertoire
Si la destination n'exite pas il te propose de la créer
Pour chaque fichier et dossier copié, une ligne est
ajoutée dans le fichierde log crée dans le répertoire destination
* **************************
Dim oFSO, sIncludeTopFolder, fLog
Dim iTotSumOfFiles, iTotSumOfFolders
' Constants for
FileSystemObject.CreateTextFile/OpenTextFileConst ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const OverwriteIfExist = -1
Const FailIfExist = 0
' Ouverture fichier en mode ASCII (TristateFalse)
Const OpenAsASCII = 0
' Opens the file as Unicode (TristateTrue)
Const OpenAsUnicode = -1
' Opens the file using the system default
(TristateUseDefault)Const OpenAsDefault = -2
' 2 Arguments :
' 1° le chemin à sauver
' 2° le chemin de sauvegarde
' ex : monvbs.vbs "c:temp" "c:test"
Set oArg = WScript.Arguments
If oArg.Count < 2 Then
MsgBox "Nombre de paramètres incorrects"
WScript.Quit
End If
asauver = oArg(0)
sauvegarde = oArg(1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.Folderexists(asauver) Then
if oFSO.Folderexists(sauvegarde) Then
else
if MsgBox("Le répertoire " + sauvegarde + " n'existe
pas."+chr(10)+chr(13)+"Voulez-vous le créer ?",4) = 6 then
oFSO.CreateFolder sauvegarde
else
WScript.Quit
end if
end if
else
MsgBox "Répertoire incorrect" + asauver
WScript.Quit
end if
' Création du log
Set fLog = oFSO.OpenTextFile(oArg(1) & "monlog.log",
ForWriting,OverwriteIfExist, OpenAsASCII)
CopyDossier(oArg(0))
fLog.WriteLine ""
fLog.WriteLine "copie de " + asauver + " vers " +
sauvegarde + " terminée."
fLog.close
wscript.quit
Sub CopyDossier(Dossier)
Dim oFolder, oFile, oSubFolder, iDummy, sErr
Set oFolder = oFSO.GetFolder(Dossier)
fLog.WriteLine oFolder
For Each oFile In oFolder.Files
debut = len(asauver)+2
longueur = len(oFile.ParentFolder)-len(asauver)-1
if longueur > 0 then
chemin = "" + mid
(oFile.ParentFolder,debut,longueur) + ""else
chemin = ""
end if
set Fichier = oFSO.GetFile(oFile.Path)
Fichier.Copy(sauvegarde+chemin+Fichier.Name)
fLog.WriteLine " " & oFile.Name
Next
For Each SousDossier In oFolder.Subfolders
' Vérification droit sur dossier
On Error Resume Next
iDummy = SousDossier.Files.Count
sErr = Err.Description
On Error Goto 0
If sErr <> "" Then
If Not LCase(sErr) = "permission refusée" Then
fLog.WriteLine "Erreur : Permission refusée pour
le dossier " &SousDossier.Name
End If
Else
debut = len(asauver)+2
longueur = len(SousDossier.ParentFolder)-len
(asauver)-1if longueur > 0 then
chemin = ""+ mid
(SousDossier.ParentFolder,debut,longueur) +""else
chemin = ""
end if
set File2 = oFSO.GetFolder(SousDossier.Path)
File2.Copy(sauvegarde+chemin+File2.Name)
CopyDossier(SousDossier)
End If
Next
End Sub
*********************
Sans compter que ce code est plein d'approximations :
strJour = Left(Date(),2) ' Retourne une CHAINE de 2 caractères
If strJour = 01 Then ' evalue un nombre
Aurait dû être strJour = Day(Date()) ' Retourne un nombre entre 1 et 31
Ou alors If strJour = "01"
Au lieu d'utiliser des WriteBlankLines 1 il est plus efficace de mettre un
vbCrLf en fin de chaine
Comme il n'y a pas de On Error Resume Next la ligne If Err = 76 ne sera
jamais atteinte
Cosmétique, mail manque un antislash ici D: INTRANET
L'usage de + au lieu du caractère normal de concaténation de chaine peut
produire des résultats surprenants
Etc...
Me fait penser à du copier/coller de différentes sources ?