Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur XCOPY comment comprendre ?

3 réponses
Avatar
Gloops
Bonjour tout le monde,

J'ai r=E9alis=E9 une sauvegarde avec XCOPY, en enregistrant la sortie=20
standard dans un fichier (merci =E0 Pierre Torris), et la sortie d'erreur=
s=20
dans un autre.

Le fichier de la sortie d'erreurs contient ceci (et rien que ceci) :

Erreur lors de la cr=E9ation du fichier - Le fichier sp=E9cifi=E9 est int=
rouvable.

Le fichier de la sortie standard ne comporte pas le mot erreur (pas plus =

que le mot "lors"), alors que lorsque j'avais fait mes tests lors de la=20
cr=E9ation du batch, les erreurs apparaissaient =E0 la fois en sortie=20
standard et en sortie d'erreurs.

Or, je trouve bien le compte de fichiers de compte-rendu. Les heures du=20
fichier de compte-rendu d'erreurs et du fichier de compte-rendu de=20
sauvegarde sont distantes d'un quart d'heure environ, ce qui ne para=EEt =

pas absurde si un des premiers fichiers copi=E9s =E9tait verrouill=E9 (ap=
r=E8s=20
tout mon antivirus semble faire une fixette sur les mails comportant un=20
renvoi sur une pi=E8ce jointe tel que pratiqu=E9 il y a quatre ans, alors=
=20
m=EAme que la pi=E8ce jointe est effac=E9e depuis longtemps, ce qui a ten=
dance=20
=E0 verrouiller des fichiers).

J'ai un peu de mal =E0 interpr=E9ter tout =E7a. Est-ce que XCOPY n'enverr=
ait=20
les messages d'erreur sur la sortie standard que dans certains cas ?

Si c'est bien =E7a, =E0 moins de comprendre exactement dans quels cas=20
l'erreur ne part que sur la sortie d'erreurs, je ne suis pas bien=20
certain qu'on puisse faire mieux avec XCOPY, il faudra faire la=20
comparaison des sommes de contr=F4le apr=E8s la sauvegarde (ce qui somme =

toute serait plus rigoureux).

Une autre piste d'interpr=E9tation, peut-=EAtre ?



SAUV.BAT :
'=3D=3D=3D=3D=3D=3D=3D=3D=3D

prompt $q$q%username%$q$q $d $t$h$h$h$_$c%userprofile%$f$_$p$g

call "C:\Documents and Settings\BibiMyself\Mes documents\subs.bat"

REM subs.bat appelle subst pour initialiser S: sur le disque externe

@IF NOT EXIST S:. ECHO DISQUE CIBLE NON DISPONIBLE

@IF NOT EXIST S:. GOTO FIN

XCOPY /E /C /M /H /Y /R /EXCLUDE:c:\excl "C:\Documents and Settings\*.*" =

"S:\Documents and Settings\*.*" 2>S:\err |"C:\Programmes\cmdlog\cmdlog"=20
"S:\log"

"C:\Documents and Settings\BibiMyself\Mes documents\VBS\NomErreurs.vbs"=20
log S:\

"C:\Documents and Settings\BibiMyself\Mes documents\VBS\NomErreurs.vbs"=20
err S:\

:FIN

@Pause



NomErreurs.VBS :
'=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

'Renommer un fichier avec la date et l'heure
'En premier param=E8tre le nom du fichier, qui ne doit pas avoir d'extens=
ion
'En deuxi=E8me param=E8tre le chemin d'acc=E8s
'Pendant le traitement,
'au nom initial sont ajout=E9s la date et l'heure, un point et l'extensio=
n txt

Dim NouveauNom
Set objArgs =3D WScript.Arguments
set FileObject =3D createobject("scripting.filesystemobject")
MsgBox objArgs(1) + objArgs(0)
Set F =3D FileObject.GetFile(objArgs(1) + objArgs(0))
'MsgBox DatePart("yyyy", F.DateLastModified)
'MsgBox DatePart("m", F.DateLastModified)
'MsgBox DatePart("d", F.DateLastModified)
NouveauNom =3D objArgs(0) + Droite(DatePart("yyyy", F.DateLastModified), =

4) + Droite(DatePart("m", F.DateLastModified), 2) + Droite(DatePart("d", =

F.DateLastModified), 2)+Droite(DatePart("h", F.DateLastModified),=20
2)+Droite(DatePart("n", F.DateLastModified), 2) + ".txt"
MsgBox NouveauNom
F.Name =3D NouveauNom

Function Droite(Chaine, NbChiffres)
Droite =3D Right("00000" & Chaine, NbChiffres)
End Function

3 réponses

Avatar
Roger LEDIG
Bonjour tout le monde,

J'ai réalisé une sauvegarde avec XCOPY, en enregistrant la sortie
standard dans un fichier (merci à Pierre Torris), et la sortie d'erreurs
dans un autre.

Le fichier de la sortie d'erreurs contient ceci (et rien que ceci) :

Erreur lors de la création du fichier - Le fichier spécifié est
introuvable.

Le fichier de la sortie standard ne comporte pas le mot erreur (pas plus
que le mot "lors"), alors que lorsque j'avais fait mes tests lors de la
création du batch, les erreurs apparaissaient à la fois en sortie
standard et en sortie d'erreurs.

Or, je trouve bien le compte de fichiers de compte-rendu. Les heures du
fichier de compte-rendu d'erreurs et du fichier de compte-rendu de
sauvegarde sont distantes d'un quart d'heure environ, ce qui ne paraît
pas absurde si un des premiers fichiers copiés était verrouillé (après
tout mon antivirus semble faire une fixette sur les mails comportant un
renvoi sur une pièce jointe tel que pratiqué il y a quatre ans, alors
même que la pièce jointe est effacée depuis longtemps, ce qui a tendance
à verrouiller des fichiers).

J'ai un peu de mal à interpréter tout ça. Est-ce que XCOPY n'enverrait
les messages d'erreur sur la sortie standard que dans certains cas ?

Si c'est bien ça, à moins de comprendre exactement dans quels cas
l'erreur ne part que sur la sortie d'erreurs, je ne suis pas bien
certain qu'on puisse faire mieux avec XCOPY, il faudra faire la
comparaison des sommes de contrôle après la sauvegarde (ce qui somme
toute serait plus rigoureux).

Une autre piste d'interprétation, peut-être ?



SAUV.BAT :
'======== >
prompt $q$q%username%$q$q $d $t$h$h$h$_$c%userprofile%$f$_$p$g

call "C:Documents and SettingsBibiMyselfMes documentssubs.bat"

REM subs.bat appelle subst pour initialiser S: sur le disque externe

@IF NOT EXIST S:. ECHO DISQUE CIBLE NON DISPONIBLE

@IF NOT EXIST S:. GOTO FIN

XCOPY /E /C /M /H /Y /R /EXCLUDE:c:excl "C:Documents and Settings*.*"
"S:Documents and Settings*.*" 2>S:err |"C:Programmescmdlogcmdlog"
"S:log"

"C:Documents and SettingsBibiMyselfMes documentsVBSNomErreurs.vbs"
log S:

"C:Documents and SettingsBibiMyselfMes documentsVBSNomErreurs.vbs"
err S:

:FIN

@Pause



NomErreurs.VBS :
'============== >
'Renommer un fichier avec la date et l'heure
'En premier paramètre le nom du fichier, qui ne doit pas avoir d'extension
'En deuxième paramètre le chemin d'accès
'Pendant le traitement,
'au nom initial sont ajoutés la date et l'heure, un point et l'extension
txt

Dim NouveauNom
Set objArgs = WScript.Arguments
set FileObject = createobject("scripting.filesystemobject")
MsgBox objArgs(1) + objArgs(0)
Set F = FileObject.GetFile(objArgs(1) + objArgs(0))
'MsgBox DatePart("yyyy", F.DateLastModified)
'MsgBox DatePart("m", F.DateLastModified)
'MsgBox DatePart("d", F.DateLastModified)
NouveauNom = objArgs(0) + Droite(DatePart("yyyy", F.DateLastModified),
4) + Droite(DatePart("m", F.DateLastModified), 2) + Droite(DatePart("d",
F.DateLastModified), 2)+Droite(DatePart("h", F.DateLastModified),
2)+Droite(DatePart("n", F.DateLastModified), 2) + ".txt"
MsgBox NouveauNom
F.Name = NouveauNom

Function Droite(Chaine, NbChiffres)
Droite = Right("00000" & Chaine, NbChiffres)
End Function




Bonjour

Mal programmé !

Aucune erreur chez moi !

on peut faire des essais jusqu'à cela marche !


le paramètres /? donne des aides


Bon courage

Cordialement

Roger

Avatar
Gloops
Roger LEDIG a écrit, le 13/04/2008 18:07 :
Bonjour

Mal programmé !


C'est bien parce que j'envisageais cette hypothèse que j'ai mis mon cod e
dans le message :)


Aucune erreur chez moi !


Donc, aucune possibilité de tester la gestion d'erreurs :)

Comme c'est la gestion d'erreurs que j'ai programmé, et uniquement la
gestion d'erreurs, pourrais-tu expliciter ce que tu entends par "mal
programmé" ?


on peut faire des essais jusqu'à cela marche !


En fait, ça marche bien depuis un certain nombre de mois, et puis
voilà-t-y pas qu'aujourd'hui se produit une erreur mal gérée, ce qu e
j'aimerais comprendre.


Lorsque j'ai écrit mon batch, j'ai pris soin de laisser se produire des
erreurs (il suffit pour cela de retirer une ligne dans le fichier
d'exclusions), de façon à m'assurer que le nom du fichier non sauvega rdé
apparaissait dans les compte-rendus. Or, aujourd'hui ce n'est plus le
cas, je me demande si l'apparition du message d'erreur dans la sortie
standard est conditionnelle.

En tout cas, chez moi, la commande
XCOPY /? | find "sortie standard"

ne retourne rien.

Avatar
Roger LEDIG
Roger LEDIG a écrit, le 13/04/2008 18:07 :
Bonjour

Mal programmé !


C'est bien parce que j'envisageais cette hypothèse que j'ai mis mon code
dans le message :)


Aucune erreur chez moi !


Donc, aucune possibilité de tester la gestion d'erreurs :)

Comme c'est la gestion d'erreurs que j'ai programmé, et uniquement la
gestion d'erreurs, pourrais-tu expliciter ce que tu entends par "mal
programmé" ?


on peut faire des essais jusqu'à cela marche !


En fait, ça marche bien depuis un certain nombre de mois, et puis
voilà-t-y pas qu'aujourd'hui se produit une erreur mal gérée, ce que
j'aimerais comprendre.


Lorsque j'ai écrit mon batch, j'ai pris soin de laisser se produire des
erreurs (il suffit pour cela de retirer une ligne dans le fichier
d'exclusions), de façon à m'assurer que le nom du fichier non sauvegardé
apparaissait dans les compte-rendus. Or, aujourd'hui ce n'est plus le
cas, je me demande si l'apparition du message d'erreur dans la sortie
standard est conditionnelle.

En tout cas, chez moi, la commande
XCOPY /? | find "sortie standard"

ne retourne rien.




Bonjour

Juste une info

Sur des partions NTFS, il y a des méta-donnés, il faut sauvegarder sur du NTFS.

Et pas d'erreurs est préférable que vouloir en trouver.

Cordialement

Roger