/ / Le code de lot ne donne pas la date correcte dans le nouveau nom du dossier - date, fichier de commandes, cmd

Le code de lot ne donne pas la date correcte dans le nouveau nom du dossier - date, fichier de commandes, cmd

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 № 1

Le 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