这个批处理脚本是如何工作的?

时间:2014-08-17 19:18:19

标签: batch-file

我有一个网站的脚本,但我有一些问题脚本如何工作

脚本

@setlocal enableextensions enabledelayedexpansion
@echo off
title movement
color 0a

set length=
set height=a

:controls
cls
echo Use WASD to move your character ([]).
echo.
for %%a in ( %height% ) do echo.
echo %length%[]
choice /c wasd /n
if %errorlevel% equ 1 call:up
if %errorlevel% equ 2 call:left
if %errorlevel% equ 3 call:down
if %errorlevel% equ 4 call:right

:left
set length=!length:~0,-1!
goto controls

:right
set length=%length%
goto controls

:up
set height=!height:~0,-2!
goto controls

:down
set height=%height% a
goto controls
好的,现在可以有人解释第一行吗? 我打破了网络,我认为它会在命令到达时为变量赋值

我也不知道这意味着什么 set height =!height:~0,-2! 还有这个 set length =!length:~0,-1!

1 个答案:

答案 0 :(得分:1)

对于enabledelayedexpansion,请参阅this blog post。 (简而言之,它使变量以一种理智的方式运作。)

如果已禁用命令扩展,则

enableextensions似乎是一个安全功能(尽管它们默认情况下似乎处于打开状态)。我也不清楚快速阅读它们的确切内容(除了一些较新的命令功能)。

编辑:从页面链接@ user3245060在hist评论中提到的是Cmd页面,它指示(至少某些)受enableextensions影响的命令,并指出可能在这些命令中提供更多详细信息命令特定页面。 (似乎Noodles对这里涉及的内容有所了解。)

set height=!height:~0,-2!似乎是字符串处理(根据this link