文本文件包含值。这些值将用作可执行文件的参数。 我尝试了以下内容,以了解如何使用文件中的输入(逐行):
@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"
这里出了什么问题?
答案 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
。