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