2
   1 echo off
   2 
   3 echo Please enter a date
   4 set /p a=
   5 echo %a%
   6 for /D %%d in (M:\Serienbriefauftrag\*) do (
   7 if not exist %%d\Erledigt\*.bat echo %%d
   8 )
   9 pause
  10 for /d %%b in (dir M:\Serienbriefauftrag\%%d /T:C) 
  11 echo %%b
  12 pause

代码在第 10 行(语法错误)之前工作正常,目的是获取文件夹的创建日期,将其与“%a%”进行比较,如果它低于输入的日期“%a%”,则应移动文件夹. 但不知何故...

找到了一种获取创建日期的方法

if not exist %%d\Erledigt\*.bat echo %%~td|findstr /i /l

新任务是使​​输出“可计算”

4

1 回答 1

1

两件事情:

1) 第 10 行%%d未定义(空),因为第一个循环的范围(定义它的位置)留在第 8 行。您可以设置另一个变量,%%d以便在循环结束后能够使用它,但要小心. 批量使用setinfor循环有点棘手。为了避开延迟变量扩展的可怕使用,我建议您在工作时留在循环内部。

@echo off
set /p a=Please enter a date: 
for /d %%d in (M:\Serienbriefauftrag\*) do (
    if not exist %%d\Erledigt\*.bat (
        :: Do whatever you want with %%d in here
        echo "%%d"
    )
)
pause

2)你的第二个循环的语法是错误的。您缺少do循环体之前的循环体,并/d让循环遍历指定目录中的所有文件夹。dir M:\Serienbriefauftrag\%%d /T:C不是目录而是命令。如果要遍历该命令的输出,则必须使用/f括号的内容并将其放在单引号中,例如('dir M:\Serienbriefauftrag\%%d /T:C').

于 2012-11-15T14:39:30.713 回答