我们有一个简单的batch file,创build一个文件夹的备份,并附加date和时间到最后。
我们使用这个增量,它会输出一个文件夹,如“数据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”
这个代码的前四行将给你可靠的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
rem replace : with . set myTime=%time::=.% rem remove cents of second set myTime=%myTime:~0,-3%
您可以通过这样设置当前的日期和时间。 我每天都在使用我的批处理文件。
%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%
输出:
201509141639 ( 14th sept 2015 04:39 PM )
http://www.dostips.com/DtTipsStringManipulation.php
运行搜索“替换子字符串”。
setlocal set "time=%time::=%" rem check that date has / delimeter if not replace it for valid md %date:/=%_%time:~0,-3% endlocal
此代码将创建一个以当前日期和时间命名的文件夹,并将完整内容从“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