组织批号

Oganizing Batch Code

我已经尝试过所有搜索,但我不能孤军奋战,我未能找到有关如何缩进代码、在与代码相关的特定点放置标签的正确说明 and/or 一般做法和不做让您的代码清晰易读。

目前我的编码要么是尝试缩进的随机数组,要么是根本没有缩进的扁平线编码。

有没有人知道关于如何停止面条式编码和单调编码的任何链接、一般规则或示例?

我几年前学到的一件事就是慷慨地发表您的评论。不仅是为了你自己,也是为了任何其他将审查你的代码的人。我通常只会在文件的开头插入注释来描述批处理文件的主要功能,以及一些功能,只是为了解释将要发生的事情或正在发生的事情。至于缩进,通常应该缩进 IF 或 FOR 等内容。这是一个简单的例子。 :: 检查当前登录用户的用户名。

@ECHO OFF

:: Declare variables
SET Something=abc
SET SomethingElse=def
SET FinalNumber=20

:: Start of batch file

:GetUsername
:: Get username of currently logged in user, and output to file
CLS
ECHO %USERNAME%>Test.txt

:CheckAdmin
:: Check if username = Admin, Echo numbers in a FOR loop
CLS
IF "%USERNAME%" EQU "Admin" (
    ECHO Admin is currently logged in
    ECHO Printing numbers 0-%FinalNumber%
    FOR /L %%I IN (0,1,%FinalNumber%) DO (
        ECHO %%I
        ECHO %%I>>Test.txt
    )
) ELSE (
    ECHO Admin is not logged in
    ECHO Printing numbers %FinalNumber%-0
    FOR /L %%I IN (%FinalNumber%,-1,0) DO (
        ECHO %%I
        ECHO %%I>>Test.txt
    )
)
:: Wait 5 seconds, than loop through again, because why not?
ECHO %Something%
ECHO %SomethingElse%
TIMEOUT>NUL /T 5
GOTO :GetUsername

虽然我不是 "Expert",但希望这能帮助您解决一些问题。如您所见,我更喜欢使用 :: 而不是 REM 进行注释,并且我还在各种功能上设置了标签 :GetUsername。有人会说这是对的,这是错的,我觉得随你便。

我会说,你可以做的是,你可以把一些部分作为一个位,像这样:

@echo off
echo Hello. Type in your name.
set /p "name"
if %name%==bob123 goto login
if %name%==joe321 goto login

然后,更多的部分在另一位。