读取文本文件中的值并进行后续处理

时间:2014-01-25 18:53:36

标签: windows file batch-file cmd

文本文件包含值。这些值将用作可执行文件的参数。 我尝试了以下内容,以了解如何使用文件中的输入(逐行):

@echo off
for /f "tokens=*" %%i in (test.txt) do (
set n1=%%i
echo %n1%
echo "done"
)

test.txt包含数字:Ex。

0.1
0.002
3
20

从批处理文件处理的批处理命令集的输出是:

20
"done"
20
"done"
20
"done"
20
"done"

这里出了什么问题?

1 个答案:

答案 0 :(得分:2)

要访问代码块中的变量,您需要delayed expansion

@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
for /f "DELIMS=" %%i in (test.txt) do (
    set "n1=%%~i"
    echo !n1!
    echo "done"
)

请注意:延迟扩展变量需要exclams而不是百分数。


如果您将for循环参数delayed expansion用作“变量”,则在此部分代码中您不需要%%i

@ECHO OFF &SETLOCAL
for /f "DELIMS=" %%i in (test.txt) do (
    echo %%i
    echo "done"
)

但您无法使用set "n1=!n1:.0=.!"进行字符串转换,例如%%i