所以,我一直在尝试创建一个简单的旋转线,持续一定数量的循环。我遇到了一个问题:我找不到添加到变量的方法,或者有一个循环计数器。这是我的代码到目前为止(其他一般批评也被接受:我是新手,这一切都有帮助。)
@echo off
:1
echo
echo
echo
echo -
echo
cls
echo
echo
echo /
echo
cls
echo
echo
echo I
echo
cls
echo
echo
echo \
echo
cls
echo
echo
echo -
echo
IF %timer%
goto 1
pause
如果已经被问过,真的很抱歉;我似乎无法找到我正在寻找的东西。此外,这很可能只是一个简单的命令,在这种情况下我再次道歉。
答案 0 :(得分:0)
这可能就是你要找的东西。这会运行代码10000次,可以根据您的需要进行修改。
@echo off
for /l %%i in (1,1,10000) do (
echo -
cls
echo /
cls
echo I
cls
echo \
cls
)
干杯,G
答案 1 :(得分:0)
@echo off
setlocal enableextensions disabledelayedexpansion
rem Get a 0x13 character (carriage return) char inside a variable
for /f %%a in ('copy /Z "%~f0" nul') do set "CR=%%a"
rem Spin the line
setlocal enabledelayedexpansion
for /l %%a in (1 1 5000) do for %%b in (- \ ^| /) do (
set /a "pct=%%a / 50"
<nul set /p ".=%%b !pct!%% !cr!"
)
endlocal
基本思路是输出纺纱元素,然后输出百分比。保持所有输出在同一行
<nul set /p "var=outputtext"
被使用。这将指示的文本回显到控制台,等待输入,从nul读取,结束提示等待并继续而不将光标移动到下一行。没有换行
现在,每次都需要用新信息覆盖此行。要做到这一点,有必要将回车符转换为变量。对于它,使用for /f
,从copy
命令的输出中检索所需的回车符。
注意:如果批处理文件(disabledelayedexpansion
)的完整路径/文件名包含任何感叹号,则此步骤中必须使用%~f0
以避免出现问题。
剩下的代码只是迭代绘制列表中的相应字符,计算输出的百分比并将所有内容打印到控制台,没有换行符(<nul set /p ...
)但是带有一个将光标移动到的aditional回车符线的起点。因此,下一个输出将覆盖前一个输出
note :在这种情况下,需要enabledelayedexpansion
才能访问已更改的百分比变量的内容并输出回车符。如果没有激活延迟扩展,解析器将从输出中删除回车符。
答案 2 :(得分:0)
您的代码存在一些错误。
主要是
IF %timer%
goto 1
Batch是一种古老的语言,非常讲究语法。您可以通过键入
来获取语法描述if /? |more
在提示符下。 (将if
替换为您想要的关键字)
if
需要
if string1==string2 thingtodoiftrue
多年来,语法已经扩展,仍然维护旧版本的兼容性,以便现在通用表单
if string1==string2 (thingtodoiftrue) else (thingtodoiffalse)
其中==
现在可能是多个运算符(equ,neq,...);您可以添加/ i开关以使字符串不区分大小写,或添加not
关键字以反转意义。如果thingtodo是单个语句,则括号是可选的。
然而,有一些古怪的语法要求。无论是事物还是(
都必须与if
关键字位于同一物理行上。序列) else (
必须全部位于一条物理线路上(如果已使用)
对于使用原始结构执行各种计数,有很多方法。这是一个:
@echo off
set count=15
:1
....
set /a count=count-1
IF %count% neq 0 goto 1
pause