2013-10-31 74 views
12

我们有一个简单的批处理文件,它创建文件夹的备份并将日期附加到最后的&时间。根据当前日期和时间创建文件夹的批处理文件

我们逐渐使用它,并输出一个文件夹,如“数据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" 

回答我自己的问题

所以,这对我来说是最简单的方法:它输出 “31-10-13-11.35”

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

+0

使用的%日期%缺省的批处理变量%时间%做到这一点? –

+0

,您可以看到%time%输出以下HH:MM中的时间,对于文件夹名称无效,因为它包含冒号。 – TheNineteenNineties

+0

'时间'变量还包括AM中必须考虑的空间。我在下面使用'WMIC'的建议消除了XP Pro及更高版本的问题。 – foxidrive

回答

1

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

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

+0

谢谢你,所以我想工作了这一点,我也做了以下 集CurrentDateUnedited =%DateDay% - %DateMonth% - %DateYear% - 。%的DateTime% 集的currentdate =%CurrentDateUnedited% 回声%的currentdate% set str =%str :: =% echo。%CurrentDate% 但是,因为它是一个冒号,我不知道如何解析代码? – TheNineteenNineties

+0

我认为你需要'echo%str%'而不是'echo%CurrentDate%'。另外,正如@SamN所说的,你可以使用内建的'%time%'。 –

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

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

该代码的前四行将为您提供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 
0
setlocal 
    set "time=%time::=%" 
    rem check that date has/delimeter if not replace it for valid 
    md %date:/=%_%time:~0,-3% 
endlocal 
5

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

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

输出继电器:

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

请您详细说明您的答案,并添加关于您提供的解决方案的更多描述。 – abarisone

+0

@abarisone: 在这个前。它将按YYYYMMDDHHMM格式分隔日期。
我正在使用它来生成我的复制文件列表,如下所示。
xcopy/e/y C:\ Upload C:\ Archive >> C:\ Result \%date:〜10 %% date:〜4,2 %% date:〜7,2 %% time:〜0 ,2 %%时间:〜3,2%.txt 它创建带有复制文件名的文本文件。 –

-1

此代码将创建与当前日期&时间和拷贝从完整的内容命名的文件夹“d:\理货数据”为“2016年8月10日17 23 “文件夹。

它需要在您的计算机的d驱动器名为“理货数据”文件夹。(下面的代码复制到一个文本文件,并保存为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

请避免用大写字母填写答案。 – Matt

相关问题