检查T日期文件夹

时间:2014-01-31 07:07:49

标签: windows batch-file batch-processing

我想检查,如果在目录c:\ Users \ abc \ Desktop.If存在T日期文件夹中存在带有formate 310114的T日期文件夹,则输出应为是,否则我在下面使用的编号

     @echo off
    setlocal EnableDelayedExpansion
    for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set year=%%c
    for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set month=%%a
    for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set day=%%b
    Set year1=%year:~2,4%
    set TODAY=%day%%month%%year1%
    for /F "tokens=1" %%a IN ('Dir "C:\Users\abc\Desktop\*%TODAY%*"  /-C/S/A:-D 2^>nul') Do Set y=!n2! & Set n2=%%a 
    echo %y%
    if %y% gtr 0 ( echo yes) else (echo no)

但是它不起作用,即使T日期文件夹不存在,输出也会变为4。 echo%y%也给出了Volume的值。如果文件不存在,为什么将Volumn作为输出,不能将0作为输出?

2 个答案:

答案 0 :(得分:0)

为什么不使用an if exist语句而不是for循环?

if exist "C:\Users\abc\Desktop\*%TODAY%*" ( echo yes ) else echo no

答案 1 :(得分:0)

使用日期/ t会产生不可靠的结果,并且会按区域和设置进行更改。

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

这也使用了unclemeat建议的测试。

@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 "today=%DD%%MM%%YYYY%"

if exist "C:\Users\abc\Desktop\*%TODAY%*" (echo yes) else (echo no)

pause