OVH Cloud OVH Cloud

batch sauvegarde wndows

2 réponses
Avatar
Rafi
Hello,
j'utilise ce batch lorsque je veux sauvegarder un laptop sous WXPSP2
installé en anglais ms avec le clavier et les options régionales
Suisse-Français ; à noter aussi que je travaille avec un disque externe sous
la lettre E:
"
@echo off
for /f "tokens=1,2,3,4* delims=. " %%i in ('date /t') do set TDDAY=%%i&set
TDDD=%%j&set TDMM=%%k&set TDYY=%%l
NTBACKUP backup "@E:\Backup\Backup.bks" /j "save" /f
"E:\backup\rsave_%TDDAY%_%TDDD%_%TDMM%_%TDYY%.bkf" /D "save" /V:yes /L:s /M
normal
set TDDAY=
set TDDD=
set TDMM=
set TDYY=
"
Et cela fonctionne -> mais si j'autilise ce batch sous un laptop installé
installé avec WXPSP2 en anglais mais avec un clavier français et les options
régionales aussi , j'ai un message d'erruer comme quoi il n'a pas les droits
de créer le fichier de sauvegarde. Et cela fonctionne si j'enlève
"_%TDDAY%_%TDDD%_%TDMM%_%TDYY%" de ce fichier de sauvegarde (c'est ce qui me
permet de savoir quand il a été fait)
Pourriez-vous me dire les modifications à faire ou autre réglages ?
Merci d'avance

Rafi

2 réponses

Avatar
Jacques Barathon [MS]
"Rafi" wrote in message
news:
Hello,
j'utilise ce batch lorsque je veux sauvegarder un laptop sous WXPSP2
installé en anglais ms avec le clavier et les options régionales
Suisse-Français ; à noter aussi que je travaille avec un disque externe
sous
la lettre E:
"
@echo off
for /f "tokens=1,2,3,4* delims=. " %%i in ('date /t') do set TDDAY=%%i&set
TDDD=%%j&set TDMM=%%k&set TDYY=%%l
NTBACKUP backup "@E:BackupBackup.bks" /j "save" /f
"E:backuprsave_%TDDAY%_%TDDD%_%TDMM%_%TDYY%.bkf" /D "save" /V:yes /L:s
/M
normal
set TDDAY > set TDDD > set TDMM > set TDYY > "
Et cela fonctionne -> mais si j'autilise ce batch sous un laptop installé
installé avec WXPSP2 en anglais mais avec un clavier français et les
options
régionales aussi , j'ai un message d'erruer comme quoi il n'a pas les
droits
de créer le fichier de sauvegarde. Et cela fonctionne si j'enlève
"_%TDDAY%_%TDDD%_%TDMM%_%TDYY%" de ce fichier de sauvegarde (c'est ce qui
me
permet de savoir quand il a été fait)
Pourriez-vous me dire les modifications à faire ou autre réglages ?


Le problème vient du fait que les variables créées contiennent des
caractères illégaux: le format court utilisé pour la date en suisse est le
point (correctement utilisé comme séparateur dans l'instruction for) mais le
format court utilisé en français "de France" est le '/'.

Le "for /f" ne rencontrant pas de point dans la chaîne passée en paramètre,
il attribue la date complète à la première variable (TDDAY). Comme cette
variable contient les deux "/" présents dans la date, elle entraîne la
génération d'un nom de fichier illégal lorsqu'elle est concaténée à rsave_.

Cela montre une des limites de l'exercice d'usage d'informations dans des
batches qui reposent fortement sur les options régionales du poste.

Une méthode possible pour contourner le problème pourrait être d'appliquer
explicitement une culture précise (par exemple Suisse-Français) avant
l'exécution de la commande "for /f" et de repasser ensuite dans la culture
par défaut. C'est très facile avec Monad ;-), cela doit être faisable via
vbscript.

Une autre méthode (beaucoup plus simple s'il on n'utilise pas Monad)
consisterait à gérer l'ensemble de la procédure de sauvegarde depuis un
script vbscript dans lequel la construction du fichier à partir de la date
peut se faire indépendamment de la culture du poste. Voir le script
ci-dessous tiré du Script Center comme exemple de manipulation de l'objet
Win32_LocalTime:
http://www.microsoft.com/technet/scriptcenter/scripts/os/dates/osdtvb01.mspx

Jacques

Avatar
Méta-MCI
Bonsoir !

Magistrale explication !

Une autre solution, serait d'indiquer plusieurs délimiteurs.
e.g. remplacer
delims=."
par
delims=.-/ "
Et on garde le reste du script.

@-salutations

Michel Claveau