批处理脚本:列出缺少的文件

时间:2017-09-20 15:32:28

标签: batch-file

我正在尝试创建一个批处理脚本,该脚本将遍历一堆文件,并将缺少的文件名称附加到名为“'donotexist''的文本文件中。文件格式为:

13050122,13050216(yy,mm,dd,hh),这是我有兴趣挑选的缺失日子。

所以这是我到目前为止的剧本:

@echo on
setlocal enableDelayedExpansion
set year=13
set "ext=.edt
pause
for /l %%a in (*501*,1,*531*) do ( 
    pause
    IF EXIST "%%a" (
        ECHO "%%a" exists
    ) ELSE (
        ECHO %%b doesn't exist >> file_pathway\doesnotexist.txt
    )
)

脚本运行,但它用:

填充didnotexist.txt文件
0 doesn't exist  
%b doesn't exist

有谁知道如何列出缺少的日子。我希望这是有道理的。

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

这是解决此问题的一种非常简单的方法:

@echo off
setlocal EnableDelayedExpansion

set /A "year=13, feb=28+^!(year%%4)"
set i=0
for %%a in (31 %feb% 31 30 31 30 31 31 30 31 30 31) do (
   set /A i+=1
   set "dpm[!i!]=%%a"
)
set i=100
for /L %%m in (1,1,12) do (
   set /A i+=1
   for /L %%d in (1,1,!dpm[%%m]!) do (
      IF EXIST "%year%!i:~1!%%d*" (
         ECHO "%year%!i:~1!%%d" exists
      ) ELSE (
         ECHO %year%!i:~1!%%d doesn't exist >> file_pathway\doesnotexist.txt
      )
   )
)

但是,要小心!这种方法将在2400年2月失败!的 ;)