我正在尝试制作一个批处理文件,每次循环时将变量递增1,然后检查变量是否等于5,如果不是,则再次循环。我知道这可能有一段时间的循环,但我不知道该怎么做,而我现在只是喜欢学习Batch for fun
这是代码,它不应该按照它应该的方式工作,它只显示一个0:然后不执行任何其他操作。那么我该怎么做呢?我有一种感觉,我设置并将变量递增错误,也许它对2 if语句感到困惑? (如果......还有其他吗?)无论如何,谢谢你的帮助
@echo off
set /p i=0:
goto A
:A
set /p i=i+1:
if i != 5 goto C
if i == 5 goto B
:C
echo Test :D
:B
pause>nul
注意:我不知道很多批次,我不是专业人士,但我喜欢学习,我只是这样做以备将来参考,因为我喜欢它。所以,这段代码可能并不好,但我想知道如何实现这一目标。
答案 0 :(得分:23)
这是一种模拟你想要完成的while循环的方法。只需要一个goto
:
@echo off
set /a x=0
:while
if %x% lss 5 (
echo %x%
pause>nul
set /a x+=1
goto :while
)
echo Test :D
答案 1 :(得分:4)
您可以使用简单的FOR
命令执行此操作:
for /l %%x in (0,1,100) do (
echo %%x
)
您可以将100
替换为您想要的数字
答案 2 :(得分:3)
要将数值设置为变量,您可以使用/a
开关:
/ A开关指定等号右侧的字符串 是一个被评估的数值表达式。
(输入SET /?
获取所有帮助。)
其次,检查你的goto
流程 - 这永远不会循环回A。
第三,检查if
表达式的语法(批处理中不存在!=
)。
答案 3 :(得分:3)
这应该有效:
@echo off
set var1=0
:loop
set /a var1=%var1%+1
echo %var1%
if %var1% EQU 5 (
goto :end
) else (
goto :loop
)
:end
pause
答案 4 :(得分:0)
@echo off
set a=0
:Count
set /a a=a+1
echo %a%
goto Count
答案 5 :(得分:0)
尝试:
@if (@CodeSection == @Batch) @then
@echo off
:a
cls
color c
echo --------------
echo start:
echo --------------
set /p start=
cls
echo --------------
echo start: %start%
echo --------------
echo --------------
echo stop:
echo --------------
set /p stop=
cls
echo --------------
echo start: %start%
echo --------------
echo --------------
echo stop: %stop%
echo --------------
echo.
echo.
echo Start in:
timeout /t 2 /nobreak >nul
echo. 5
timeout /t 1 /nobreak >nul
echo. 4
timeout /t 1 /nobreak >nul
echo. 3
timeout /t 1 /nobreak >nul
echo. 2
timeout /t 1 /nobreak >nul
echo. 1
timeout /t 1 /nobreak >nul
cls
echo --------------
echo start: %start%
echo --------------
echo --------------
echo stop: %stop%
echo --------------
echo.
echo.
echo.
echo ============================================
set SendKeys=CScript //nologo //E:JScript "%~F0"
%SendKeys% ">----"
%SendKeys% "{enter}"
:while
echo %start%
%SendKeys% "%start%"
%SendKeys% "{enter}"
set /a start=start+1
timeout /t 1 /nobreak >nul
if %start% leq %stop% goto :while
goto :end
:end
echo ============================================
%SendKeys% ">----"
%SendKeys% "{enter}"
:c
echo count again? Y/N
set /p return=
if %return% == Y goto :a
if %return% == N goto :b
goto :c
:b
@end
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));