组织批号
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
然后,更多的部分在另一位。
我已经尝试过所有搜索,但我不能孤军奋战,我未能找到有关如何缩进代码、在与代码相关的特定点放置标签的正确说明 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
然后,更多的部分在另一位。