Batch file 组织批次代码

Batch file 组织批次代码,batch-file,indentation,organization,Batch File,Indentation,Organization,我已经尝试了所有的搜索,但我不能独自一人在这方面,我没有找到关于如何缩进代码、在与代码相关的某些点上放置标签和/或使代码易读的一般注意事项的正确说明 目前,我的编码要么是尝试缩进的随机数组,要么是完全没有缩进的平线编码 有人知道如何停止意大利面编码和单调编码的链接、一般规则或示例吗?几年前我学到的一件事就是对你的评论要慷慨。不仅是为了你自己,也为了任何会检查你的代码的人。我通常只会在文件的开头插入一条注释来描述批处理文件的主要功能,以及一些功能,只是为了解释将要发生什么,或者正在发生什么。至于缩

我已经尝试了所有的搜索,但我不能独自一人在这方面,我没有找到关于如何缩进代码、在与代码相关的某些点上放置标签和/或使代码易读的一般注意事项的正确说明

目前,我的编码要么是尝试缩进的随机数组,要么是完全没有缩进的平线编码


有人知道如何停止意大利面编码和单调编码的链接、一般规则或示例吗?

几年前我学到的一件事就是对你的评论要慷慨。不仅是为了你自己,也为了任何会检查你的代码的人。我通常只会在文件的开头插入一条注释来描述批处理文件的主要功能,以及一些功能,只是为了解释将要发生什么,或者正在发生什么。至于缩进,通常应该缩进诸如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

虽然我不是“专家”,但希望这能帮你澄清一些事情。正如您所看到的,我更喜欢使用
而不是
REM
作为注释,并且我还在各种函数上设置标签
:GetUsername
。有人会说这是对的,这是错的,我觉得只需要按照你喜欢的方式去做。

我会说,你能做的是,你可以把一些部分放在一块,像这样:

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

然后,还有更多的部分。

我所知道的唯一一种缩进真正重要的语言是Python。只要坚持下去,最终你会开发出你自己的风格。而不是在这里发布你的代码——我一直认为缩进对于可视化地组织代码非常有用。也可以考虑将代码分成几个批处理文件。对于AT给出的编码风格的建议也可以在批处理文件中使用。但是警告说批处理不支持联机注释。我建议您不要使用双冒号进行注释。做这件事并没有一个单一的理由,但有两个理由不做!首先,感谢Blizfrost,我会使用更多的注释,而不是将所有内容缩进。Aacini我读了那篇文章,但我不明白为什么“::Comment”是不好的,它只是讨论了任何无效标签是如何被忽略的,以及::是如何无缘无故地流行的,同时还证明了你不能意外地“goto:one”如果“::one”是一条评论。没问题,据称,如果在代码的某些位置插入
注释,将导致语法错误。虽然我确实喜欢评论,但我通常坚持在标签前或标签后发表评论。不,不需要缩进所有内容,但是由于缺少提供的代码,我无法向您展示我在代码上缩进的位置和不缩进的位置。正如我所说的,您应该可以在
IF
&
FOR
.Ha中缩进代码,虽然可能很晚,但我(希望)已经克服了我的坏习惯,开发了(希望)可读的编码风格。但是我看不出这个答案是如何工作的,通过命令
rem
,无效标签
,或者跳过
goto:label
,没有任何注释。同样,您在
set/p
命令中忘记了
=
符号。