J'ai un script qui sauvegarde des fichiers d'un dossier vers un nouveau dossier nommé avec la date et l'heure actuelles, mais la date ne s'affiche pas correctement dans le nom du dossier.
Voici le code:
set hh=%time:~-11,2%
set /a hh=%hh%+100
set hh=%hh:~1%
Set dateseed=%date:~10,4%%date:~4,2%%date:~7,2%_%hh%%time:~3,2%%time:~6,2%
if not exist "C:Tempbackup%dateseed%" mkdir "C:Tempbackup%dateseed%"
cd "C:Tempbackup%dateseed%"
copy "C:Temptest2" .
Le nouveau dossier est censé avoir un nom comme: 20140219_100105 mais obtient le nom "-0-1_100115"
Qu'est-ce qui ne va pas?
Réponses:
1 pour la réponse № 1Le format de %date%
peut être modifié par l'utilisateur et modifié par défaut sur différents paramètres de région afin que vous ne puissiez pas "compter dessus pour une gamme de machines.
Un autre problème est le calcul utilisant hh
qui sera traité comme un nombre octal lorsque le premier chiffre sera égal à zéro et, dans ce cas, le calcul échouera avec un message d'erreur si le nombre n'est pas valide. Octal, tel que 09
Les quatre premières lignes de ce code vous donneront des variables AA JJ JJ MM AAAA HH Min Sec dans XP Pro et versions ultérieures.
@echo off
for /f "tokens=2 delims==" %%a in ("wmic OS Get localdatetime /value") do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause