BATCH:在IF语句中将SET变量设置为LOOP并启用setlocal enableDelayedExpansion:IMPOSSIBLE

时间:2014-10-15 13:57:49

标签: loops batch-file if-statement set

我有一个pb与这个批处理脚本,我已经花了1个小时试图解决它!但没有机会

我尝试使用关于条件的字符串设置变量TYP(CON是字符串),pb关注TYP变量。我无法设置此变量,当然我无法回显该值。

我需要帮助

@ECHO OFF
 cls

setlocal enableDelayedExpansion

SET ROOT="C:\Users\7642FH\Local\RawFile"
SET ROOT=%ROOT:~1%
SET ROOT=%ROOT:~0,-1%
SET TYPE1=Actual
SET TYPE1=Forcast
set TYP =

FOR /F  %%d in ('DIR %ROOT% /AD /B') DO (

  FOR /F  %%f in ('DIR "%ROOT%\%%d\*.*" /B') DO (
      echo %%d
      ECHO %%f
      SET x=%%f
      set y=!x:~0,3%!


   IF CON ==!y! (
        set TYP = aaa
        echo aaa
        echo !TYP!
        ) else (
        echo rrr
        set TYP = rrrr
        echo !TYP!
        )

  )
)

endlocal
echo on

2 个答案:

答案 0 :(得分:3)

你的问题在这里:

set TYP = aaa

在这里:

set TYP = rrrr

您定义一个名为" TYP"的变量,而不是" TYP"

set TYP=aaa

代替。 (如果空格是变量名称的预期部分,则用!TYP !引用它)

甚至更好:

set "TYP=aaa"

可防止值末尾出现意外空格。

答案 1 :(得分:1)

set y=!x:~0,3%!

中有一个额外的%符号。