17

我们有一个简单的批处理文件,它创建文件夹的备份并将日期和时间附加到末尾。

我们以增量方式使用它,它会输出一个文件夹,例如“data 28-04-13”。

我想将时间添加到此末尾,但是我的代码将时间输出为 HH:MM,这对于文件夹名称无效,因为它包含冒号 (:)。

请有人修改我的代码以删除:,或将其替换为“。”。

谢谢你

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

回答了我自己的问题

所以,这对我来说是最简单的方法:

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

输出“31-10-13-11.35”

4

6 回答 6

23

此代码的前四行将为您提供 XP Pro 及更高版本中可靠的 YY DD MM YYYY HH Min Sec 变量。

内置的 cmd 日期和时间变量是用户可配置的,因此对于任何通用批处理文件都不可靠。

@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
于 2013-10-31T12:04:46.510 回答
7
rem replace : with .
set myTime=%time::=.%

rem remove cents of second
set myTime=%myTime:~0,-3%
于 2013-10-31T11:53:27.513 回答
6

您可以通过这样做来设置当前日期和时间。我每天都在我的批处理文件中使用它。

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

输出:

201509141639 ( 14th sept 2015 04:39 PM )
于 2015-09-15T13:24:26.650 回答
2

此代码将创建一个以当前日期和时间命名的文件夹,并将完整内容从“D:\Tally Data”复制到“08-10-2016 17 23”文件夹。

它需要在您计算机的 D 驱动器中名为“Tally Data”的文件夹。(将以下代码复制到文本文档并保存为 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
于 2016-10-08T12:08:11.773 回答
1

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

运行搜索“替换子字符串”。

于 2013-10-31T11:20:26.550 回答
0
 setlocal
   set "time=%time::=%"
   rem check that date has / delimeter if not replace it for valid
   md %date:/=%_%time:~0,-3%
 endlocal
于 2013-10-31T14:53:43.093 回答