2013-10-31 11 views
12

mamy prosty plik wsadowy, który tworzy kopię zapasową folderu i dołącza datę końca do końca &.Plik wsadowy do utworzenia folderu w oparciu o bieżącą datę i czas

Używamy tego przyrostowo i wyprowadza folder taki jak "data 28-04-13".

Chciałbym dodać czas do końca tego, jednak mój kod wyświetla czas jako HH: MM, który nie jest prawidłowy dla nazwy folderu, ponieważ zawiera dwukropek (:).

Czy ktoś mógłby zmodyfikować mój kod, aby usunąć: lub zastąpić go ".".

Dziękuję

@echo off & for /F "tokens=1-4 delims=/ " %%A in ('date/t') do (
set DateDay=%%A 
set DateMonth=%%B 
set DateYear=%%C 
) 

@echo off & for /F "tokens=1-4 delims=/ " %%D in ('time/t') do (
set DateTime=%%D 
) 

set CurrentDate=%DateDay%-%DateMonth%-%DateYear%-%DateTime% 

md "F:\MobilePC\data %CurrentDate" 

odpowiedział na moje własne pytanie

Tak, to był najłatwiejszy sposób dla mnie:

set CurrentDate=%DateDay%-%DateMonth%-%DateYear%-%time:~0,2%.%time:~3,2% 

które wyjścia "31-10-13-11.35"

+0

Użyj domyślne zmienne partia% date% % czasu% to zrobić? –

+0

jak widać% time% wyprowadza czas w następującym HH: MM, który nie jest prawidłowy dla nazwy folderu, ponieważ zawiera dwukropek. – TheNineteenNineties

+0

Zmienna "time" zawiera również spacje w AM, które muszą być rozliczane. Moja sugestia poniżej za pomocą 'WMIC' eliminuje problemy dla XP Pro i wyżej. – foxidrive

Odpowiedz

1

http://www.dostips.com/DtTipsStringManipulation.php

Wyszukaj "Zastąp podłańcuch".

+0

Dzięki, więc staram się wypracować to, mam zrobić następujące zestaw CurrentDateUnedited =% DateDay% -% DateMonth% -% DateYear% -.% DateTime% zestaw CurrentDate =% CurrentDateUnedited% echo% CurrentDate% zestaw str =% str :: =% echo.% CurrentDate% Ale ponieważ jest to dwukropek, nie jestem pewien, jak przeanalizować to w kodzie? – TheNineteenNineties

+0

Myślę, że trzeba "echo% str%" na końcu zamiast "echo% CurrentDate%". Ponadto, jak powiedział @SamN, możesz użyć wbudowanego '% time%'. –

6
rem replace : with . 
set myTime=%time::=.% 

rem remove cents of second 
set myTime=%myTime:~0,-3% 
15

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

Wbudowane zmienne daty i czasu cmd są konfigurowalne przez użytkownika i nie są wiarygodne dla żadnego ogólnego pliku wsadowego.

@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 
0
setlocal 
    set "time=%time::=%" 
    rem check that date has/delimeter if not replace it for valid 
    md %date:/=%_%time:~0,-3% 
endlocal 
5

można ustawić aktualną datę i czas w ten sposób. Używam tego codziennie w moim pliku wsadowym.

%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2% 

ouput:

201509141639 (14th sept 2015 04:39 PM) 
+1

Czy mógłbyś bardziej rozwinąć swoją odpowiedź, dodając nieco więcej opisu dostarczonego rozwiązania? – abarisone

+0

@abarisone: w tym przykładzie. oddzieli datę według formatu YYYYMMDDHHMM.
Używam tego do generowania mojej listy kopiowanych plików, jak poniżej.
xcopy/e/y C: \ Prześlij C: \ Archiwum >> C: \ Wynik \% data: ~ 10 %% data: ~ 4,2 %% data: ~ 7,2 %% czas: ~ 0 , Czas 2 %%: ~ 3,2% .txt tworzy plik tekstowy z kopiowaną nazwą pliku. –

-1

Kod ten będzie utworzyć folder o nazwie z bieżącej daty i czasu & kopii pełnej zawartości z "D: \ Tally danych" „08-10-2016 17 23 " teczka.

Wymaga folder o nazwie „Tally danych” na dysku komputera D. (Skopiuj poniższy kod do dokumentu tekstowego i zapisać jako plik wsadowy DOS)

for /f "tokens=1* delims=" %%a in ('date /T') do set datestr=%%a 

set time=%TIME:~0,2%" "%TIME:~3,2% 

mkdir C:\%date:/=%" "%time%\Backup 

xcopy "D:\Tally Data" C:\%date:/=%" "%time%\Backup /E /S /Q /Y 
+0

Należy unikać pisania odpowiedzi w pełnych wersjach. – Matt