2

I want to simply add 10 to the variable "%%i" in this batch file code and print it out to the screen. numbers.txt is a file that contains a single column of numbers.

FOR /F %%i IN (numbers.txt) DO (
    set /a "T=%%i+10"
    @echo %T%
)

For example, if %%i was 1 I would want T to be 11.

Thanks.

4

4 回答 4

4

无需延迟扩展,您可以使用:

@echo off
set constant=10
FOR /F %%i IN (numbers.txt) DO (
    set /a "T=%%i+%constant%"
    call echo %%T%%
)

常量不需要延迟扩展,因为它在整个循环中都是常量。

于 2013-09-28T06:45:47.873 回答
1

尝试以下代码,它应该根据您在问题中的描述工作:

@echo off
setlocal enabledelayedexpansion
set T=0  
set K=10
for /f %%i in (numbers.txt) do (    
  set /A T=!K! + %%i    
  echo !T! )
endlocal

将其保存为 .bat 文件扩展名并从命令提示符运行。
如果文件numbers.txt包含:

1
2
3

输出将是:

11
12
13
于 2013-09-28T00:19:52.370 回答
0

您可以通过延迟的环境变量扩展来做到这一点。在 shell 中,您必须首先键入

cmd /v

然后你可以执行这个批处理脚本:

FOR /F %%i IN (numbers.txt) DO (
    set /a T=%%i + 10
    @echo !T!
)

如果你不cmd /v先运行,那么它只会按!T!字面意思输出。有关set /?延迟的环境变量扩展的详细信息,请参阅。

于 2013-09-28T00:13:46.137 回答
0

通过打开延迟扩展来启动您的批处理文件。启用延迟扩展后,使用!而不是引用循环内的变量%

SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F %%i IN (numbers.txt) DO (
    set /a "T=%%i+10"
    @echo !T!
)
于 2013-09-28T03:49:37.473 回答