/ / Arquivo de lote para criar uma pasta com base na data e hora atual - windows, batch-file, cmd

Arquivo em lote para criar uma pasta com base na data e hora atuais - windows, batch-file, cmd

Temos um arquivo de lote simples que cria um backup de uma pasta e acrescenta a data e a hora ao final.

Usamos isso incrementalmente e gera uma pasta como "data 28-04-13".

Eu gostaria de adicionar o tempo para o final deste, no entanto meu código de saída de tempo como HH: MM, que não é válido para um nome de pasta, pois inclui dois pontos (:).

Por favor alguém poderia modificar meu código para remover o:, ou substituí-lo por um ".".

Obrigado

@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:MobilePCdata %CurrentDate"

Respondeu minha própria pergunta

Então, essa foi a maneira mais fácil para mim:

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

Quais saídas "31-10-13-11.35"

Respostas:

16 para resposta № 1

As quatro primeiras linhas deste código lhe darão variáveis ​​confiáveis ​​YY DD MM AAAA HH Min Sec no XP Pro e superior.

As variáveis ​​de data e hora do cmd incorporadas são configuráveis ​​pelo usuário e, portanto, não são confiáveis ​​para nenhum arquivo de lote geral.

@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

6 para resposta № 2
rem replace : with .
set myTime=%time::=.%

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

5 para resposta № 3

Você pode definir a data e a hora atuais fazendo isso. Eu estou usando isso diariamente no meu arquivo em lotes.

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

Saída:

201509141639 ( 14th sept 2015 04:39 PM )

1 para resposta № 4

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

Execute uma pesquisa por "Substituir uma substring".


0 para a resposta № 5
 setlocal
set "time=%time::=%"
rem check that date has / delimeter if not replace it for valid
md %date:/=%_%time:~0,-3%
endlocal

-1 para resposta № 6

Esse código criará uma pasta nomeada com data e hora atuais e copia o conteúdo completo da pasta "D: Tally Data" para "08-10-2016 17 23".

Ele requer uma pasta chamada "Tally Data" na unidade D do seu computador. (Copie o código abaixo para um documento de texto e salve como um arquivo de lote do 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