无法通过 bat 文件比较声明为 success/failure 状态的变量

Unable to compare the variable declared as a success/failure state via bat file

我创建了一个 bat 文件来查找具有主文件中定义的文件夹列表中的子文件夹的文件夹。

脚本:

@echo off
REM SetLocal EnableDelayedExpansion
for /F "delims=" %%a in (D:\Temp\A\folder_creation\FRONT_OFFICE_SERVER.txt) do (
pause
echo %%a
(echo %%a |find /I "\" > null && set COUNTER='SUB' || set COUNTER='NO_SUB') >> abc.log
pause
SetLocal EnableDelayedExpansion
echo counter is !COUNTER!
pause
set SUB='SUB'
IF !COUNTER!=='%SUB%' ( 
echo %%a has a subfolder
pause
SET !COUNTER!=ABC
) ELSE (
echo %%a doesnt have a subfolder
pause
SET !COUNTER!=ABC
)
)

FRONT_OFFICE_SERVER.txt

的文件内容
ABC
DEF
ABC\DEF
ABC\GHI
TEMP
A
B\A

此处脚本 运行 循环文本文件中提到的文件夹名称并根据验证进入循环 provided.But 每次循环进入 IF 子句或 else子句但不是根据子文件夹的存在。

我的意图是 运行 如果子文件夹不存在,If 子句下的命令集,如果 sb 文件夹存在,则执行其他部分命令。

我觉得这是因为 if 验证,我缺少对所用局部变量的单引号或双引号。

有人可以帮我解决这个问题吗,因为这个小的待处理的东西从昨天开始就完成了整个工作?

这是一个显示更简单思维过程的示例脚本:

@Echo Off
For /F "Delims=" %%I In (D:\Temp\A\folder_creation\FRONT_OFFICE_SERVER.txt) Do (
    If "%%~nI" Equ "%%~I" (
        Echo=[%%I] No Sub - run the set of commands
    ) Else (
        Echo=[%%~I] Sub exists - run the part commands
    )
)
Pause

希望对你有所帮助,