我想检查,如果在目录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作为输出?
答案 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