为什么这不会增加?我在批处理文件中使用它。它可以正确地完成所有操作,但不会增加。我做错了什么?
@SET variable=1
@echo How many increments should be created?
@set /p increments=
@echo off
@FOR /l %%x in (1, 1, %increments%) do @(
@SET /A variable=variable+1
@echo %variable%
)
@ECHO Program Complete!
@pause
编辑:这不是重复,这是一个完全不同的问题。
答案 0 :(得分:1)
prefix header已经向您展示了缺失的内容 - 延迟变量扩展。
由于您使用的语法set /A variable=variable+1
与set /A variable=%variable%+1
非常相似,因此set /A variable=!variable!+1
等延迟扩展会有所帮助。
但是,您可以使用其他语法来避免延迟扩展:set /A variable+=1
:
for /L %%x in (1, 1, %increments%) do (
set /A "variable+=1"
)
echo %variable%
当然,如果禁用延迟扩展,echo
在循环内不再起作用,所以我将它移出循环以显示最终结果,使用标准(立即)扩展。
答案 1 :(得分:0)
试试这个:
@echo off
setlocal EnableDelayedExpansion
SET "variable=1"
set /p "increments=How many increments should be created? "
echo off
FOR /l %%x in (1, 1, %increments%) do (
SET /A "variable=!variable!+1"
echo !variable!
)
ECHO Program Complete!
pause
在循环内(或如果),您应该使用setlocal EnableDelayedExpansion
和!
代替%
我也改变了你的set /p
,因为你可以给一个字符串回显set /p
本身,而不是在它上面使用echo
,并在你的集合周围放置双引号,这样它就不会像空格这样的值的错误。请注意,当您尝试输入字符串而不是数字时,它将不会循环,而不是崩溃
修改强>
一个更简单的版本,只包含循环变量本身(%% x)且没有延迟扩展:
@echo off
SET "variable=1"
set /p "increments=How many increments should be created? "
set /a "forincrements=increments+1"
FOR /l %%x in (%variable%, 1, %forincrements%) do (
echo %%x
)
ECHO Program Complete!
pause
答案 2 :(得分:0)
在此解决方案中,我既使用它又使用它。
@echo off
setlocal enabledelayedexpansion
SET /A i = 1
for /f "tokens=*" %%f in (temp.txt) do (
IF !i!==2 echo %%f
SET /a i+=1
)
答案 3 :(得分:-1)
上面丹尼斯解决方案的略微修改版本。注意set / a命令。当然,在这种情况下,你并不真正需要var“variable”,但我想这是一个你需要使用它的赋值。在更一般的设置中,您可能需要它。
@echo off
setlocal enabledelayedexpansion
set variable=1
set /p increments=How many increments should be created?
for /l %%x in (1, 1, %increments%) do (
echo !variable!
set /a variable += 1
)
echo Program Complete!