Merci à vous pour vos réponses.
Beaucoup de neuf depuis mon dernier post.
Tout d'abord, après avoir insisté pour que je fasse le lancement hebdo en batch (ce qui me semblait impossible), mon responsable m'a dit: "je vais vous donner un indice: utiliser du javascript.
Réponse de ma part: "Je ne connais PAS ce langage."
- "Mais il est très facile d'emploi, allez-y, essayez."
J'ai donc commencé à essayer d'en comprendre les bases, non sans mal.
J'ai vu au passage que ce langage ne servait pas à cela, qu'il était avant tout destiné aux pages web.
Pourquoi m'inviter à l'utiliser alors ? Réponse: car c'est le langage que mon chef connait !
Quelle prise de risque de sa part ! Quelle clarté dans son jugement ! Quelle ouverture d'esprit !
Au bout de deux heures, voyant que je patinais, il a de lui même rédigé ce qui permettait de lancer un autre script batch une fois par semaine:
d=new Date();
if (d.getDay()==3)
{
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.run("c:\\copy_data.bat");
}On s'est donc retrouvé avec un script en java, qui servait à lancer un autre script en batch (bonjour la logique et la facilité !).
Peut de temps après, j'ai reçu par MP un message sur le forum
http://batch.xoo.it .
Bonjour Spip5
j'ai demandé de l'aide sur un forum anglais pour ton histoire de date
un membre plus expérimenté que moi à réaliser ceci
, les commentaires sont en anglais je pense que tu maitrises cette langue et le backup s effectue chaque vendredi à 12h00.
dis moi si ça fonctionne
J'ai demandé sans utilisation de planificateur de tâches and robocopy
@echo off
:evaluate
call :set_current_day
if not %DoW%==Fri (
echo It's not even Friday.
echo Here you can just exit the script with
echo goto :eof
echo or you can wait and retest
ping -w 800 -n 39601 127.0.0.1 >nul 2>&1
goto evaluate
)
echo If we get here, it's Friday
call :set_current_hour
if %hr% GTR 11 (
echo The current time is already past 12:00 so we don't want to run the script today.
echo You can exit the script with goto :eof or you can
echo wait and retest
ping -w 800 -n 39601 127.0.0.1 >nul 2>&1
goto evaluate
)
:wait_for_noon
echo If we're here, it's Friday and it's before noon so we need to watch for the changeover
echo to noon and then run.
call :set_current_hour
if %hr%==12 goto what_to_actually_do
echo it's not noon yet, wait 20 seconds and check again
ping -w 800 -n 21 127.0.0.1 >nul 2>&1
goto wait_for_noon
goto :eof
:what_to_actually_do
echo We're here! It's noon on Friday.
echo stick your commands here.
echo When finished with the commands, you can exit with goto :eof
echo or you can start all over again and wait for next week.
ping -w 800 -n 39601 127.0.0.1 >nul 2>&1
goto evaluate
:set_current_day
for /f "tokens=1-3 delims=/" %%a in ("%date%") do (
set dd=%%b
set mm=%%a
set yy=20%%c
)
if 1%dd:~0,1%==10 set dd=%dd:~1,1%
if 1%mm:~0,1%==10 set mm=%mm:~1,1%
set Days=WedThuFriSatSunMonTue
set /a z=14-mm,z/=12
set /a jy=yy-z
set /a jm=12*z+mm-3
set /a mjd=153*jm+2,mjd/=5
set /a mjd=mjd+dd+365*jy+jy/4-jy/100+jy/400-678882
set /a "DoW=mjd%%7"
set /a DoW*=3
call set DoW=%%Days:~%DoW%,3%%
goto :eof
:set_current_hour
for /f "tokens=1 delims=:" %%a in ("%time%") do set hr=%%a
goto :eofAmicalement
Laddy
Miracle ! Elle avait trouvé comment faire ce que je croyais impossible.
J'en parle à mon responsable: "J'ai trouvé (grâce à un contact) comment faire pour tout faire en batch, sans passer par un script intermédiaire en javascript. Basculer tout en batch serait plus logique, non ?"
Réponse de sa part: "Mouais en même temps le javascript est déjà écrit, donc autant l'utiliser."
...
J'eus alors de nouvelles envies de meurtre.
Donc au final, je m'en suis tenu à un simple xcopy, ainsi qu'il le souhaitait.
Voici au final mon script, lancé par le javascript une fois par semaine. Les accents passent mal ici, car j'ai voulu qu'ils soient visibles dans la fenêtre d'invite de commande, ce qui pose quelques soucis de compatibilité avec un éditeur de texte tel que celui utilisé sur un forum. J'y ai intégré la copie des archives Outlook dans un sous-répertoire caché.
@ echo off
color 0A
REM Message d"annonce
Echo Nous sommes mercredi, jour de la sauvegarde automatique de vos donn‚es.
REM Message d‚but pr‚ambule
Echo Contr“les pr‚alables en cours ...
REM V‚rification de la connexion depuis le site
IF EXIST \\serveur\%username%$ GOTO online ELSE GOTO offline >nul
:online
REM Mappage du lecteur perso si besoin
IF NOT EXIST U: net use U: \\serveur\%username%$ /persistent:yes >nul
REM Mappage du lecteur public si besoin
IF NOT EXIST P: net use P: \\serveur\commun /persistent:yes >nul
REM Cr‚ation du r‚pertoire de sauvegarde sur le client si besoin
IF NOT EXIST C:\"Documents and Settings"\%username%\"Mes documents"\"R‚pertoire synchronis‚" mkdir C:\"Documents and Settings"\%username%\"Mes documents"\"R‚pertoire synchronis‚" >nul
REM Cr‚ation des r‚pertoire de sauvegarde sur le serveur si besoin
IF NOT EXIST U:\"R‚pertoire synchronis‚" mkdir U:\"R‚pertoire synchronis‚" >nul
IF NOT EXIST U:\"R‚pertoire synchronis‚"\Outlook mkdir U:\"R‚pertoire synchronis‚"\Outlook >nul
REM Retirer les attributs sur le répertoire de sauvegarde Outlook
IF EXIST U:\"R‚pertoire synchronis‚"\Outlook ATTRIB -R -H U:\"R‚pertoire synchronis‚"\Outlook >nul 2>&1
REM Cr‚ation du raccourci bureau si besoin
IF NOT EXIST C:\"Documents and Settings"\%username%\bureau\"R‚pertoire synchronis‚.lnk" copy P:\informatique\"R‚pertoire synchronis‚.lnk" C:\"Documents and Settings"\%username%\bureau >nul
REM Message fin du pr‚ambule
Echo ... Fin des contr“les.
REM Inscription des dates et heures dans le fichier de log
date /t >>u:\"R‚pertoire synchronis‚"\%username%.log
time /t >>u:\"R‚pertoire synchronis‚"\%username%.log
REM Lancement de la copie
Echo Copie des donn‚es locales vers le serveur en cours ...
xcopy C:\"Documents and Settings"\%username%\"Mes documents"\"R‚pertoire synchronis‚" u:\"R‚pertoire synchronis‚" /d /e /c /i /g /h /f /k /y >>u:\"R‚pertoire synchronis‚"\%username%.log
xcopy c:\"Documents and Settings"\%username%\"Local Settings"\"Application Data"\Microsoft\Outlook\*.pst u:\"R‚pertoire synchronis‚\Outlook" /f /d /e /c /i /g /h /k /y >>u:\"R‚pertoire synchronis‚"\%username%.log
REM Cacher les fichiers de log et pst
ATTRIB +h u:\"R‚pertoire synchronis‚"\%username%.log >>u:\"R‚pertoire synchronis‚"\%username%.log
ATTRIB +R +H u:\"R‚pertoire synchronis‚"\Outlook >>u:\"R‚pertoire synchronis‚"\%username%.log
REM Fin de la copie
echo ... La copie est termin‚e.
GOTO end
:offline
REM Message fin du pr‚ambule
Echo ... Fin des contr“les.
REM Message non connexion au site
Echo Vous n'ˆtes pas connect‚ depuis votre bureau, la sauvegarde des donn‚es n'a pas eu lieu.
GOTO :end
:end
REM message de fin
Echo Merci d'avoir patient‚.
Echo (Mon chef est un con).
REM Laisser le temps de lire les r‚sultats … l'‚cran
sleep 5Voilà, je crois avoir fini.
Merci à tous de m'avoir aidé, même si au final O-Eron se sera décarcassée pour rien. Je m'en excuse à nouveau platement.