将批处理 If/ELSE 语句分成多行 - 难以阅读代码

Fre*_*ers -4 batch-file syntax-error

我在这里找到了这段代码 --> ::使用批处理检查路径是文件还是文件夹

但我发现它很难阅读并且想简化/分解它。我不知道如何做到这一点,我尝试了下面的方法和一些变化但无济于事。有人可以帮忙吗?谢谢!

这段代码的工作原理:

@Echo Off
Set "ATTR=D:\Download\Documents\New"
For %%Z In ("%ATTR%") Do If "%%~aZ" GEq "d" (Echo Directory
) Else If "%%~aZ" GEq "-" (Echo File) Else Echo Inaccessible
Pause
Run Code Online (Sandbox Code Playgroud)

这就是我希望它看起来像的样子,但无法弄清楚:

@echo off

set "ATTR=%AppData%\Microsoft\Excel\XLSTART"

For %%Z In ("%ATTR%") Do If "%%~aZ" GEq "d" GoTo DIR
Else If "%%~aZ" GEq "-" GoTo FILE
Else GoTo NOTFOUND

:DIR
Echo "Dir Found!"
Pause

:FILE
Echo "File Found!"
Pause

:NOTFOUND
Echo "NOTHING FOUND!"
Pause
Run Code Online (Sandbox Code Playgroud)

Com*_*mpo 8

获取链接中的初始代码,并添加括号有助于分解IfandElse结构:

@Echo Off
For %%Z In ("%ATTR%") Do (
    If "%%~aZ" GEq "d" (
        Echo Directory
    ) Else (
        If "%%~aZ" GEq "-" (
            Echo File
        ) Else (
            Echo Inaccessible
        )
    )
)
Pause
Run Code Online (Sandbox Code Playgroud)

因此,用GoTo's 修改它,也许这样的东西更适合您的目的:

@Echo Off
PushD "%~dp0"
ClS
Set "ATTR=%AppData%\Microsoft\Excel\XLSTART"
For %%Z In ("%ATTR%") Do (
    If "%%~aZ" GEq "d" (
        GoTo DIR
    ) Else (
        If "%%~aZ" GEq "-" (
            GoTo FILE
        ) Else (
            GoTo NOACCESS
        )
    )
)
GoTo NOTFOUND

:DIR
Echo "Directory Found!"
GoTo ENDFOR

:FILE
Echo "File Found!"
GoTo ENDFOR

:NOTFOUND
Echo "Not Found!"
GoTo ENDFOR

:NOACCESS
Echo "Inaccessible!"

:ENDFOR
Pause
Exit /B
Run Code Online (Sandbox Code Playgroud)