/ / Batch code nie podaje poprawnej daty w nowej nazwie folderu - date, batch-file, cmd

Kod partii nie podaje poprawnej daty w nowej nazwie folderu - data, plik wsadowy, cmd

Mam skrypt, który tworzy kopie zapasowe plików z folderu do nowego folderu o nazwie z bieżącą datą i godziną, ale data nie jest wyświetlana poprawnie w nazwie folderu.

Oto kod:

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" .

Nowy folder powinien otrzymać nazwę: 20140219_100105 ale dostaje nazwę "-0-1_100115"

Co jest nie tak?

Odpowiedzi:

1 dla odpowiedzi № 1

Format %date% może być zmieniany przez użytkownika i domyślnie zmienia się w różnych ustawieniach regionu, więc nie możesz polegać na nim dla wielu maszyn.

Kolejną kwestią są obliczenia za pomocą hh który będzie traktowany jako liczby ósemkowe, gdy pierwsza cyfra będzie wynosić zero, aw takim przypadku obliczenia zakończą się niepowodzeniem z komunikatem o błędzie, gdy liczba jest niepoprawna ósemkowa, np. 09

Pierwsze cztery linie tego kodu dadzą Ci wiarygodne zmienne YY DD MM YYYY HH Min Sec w XP Pro i wyższych.

@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