Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 测试文本列表中的变量以批量设置值_Batch File_For Loop - Fatal编程技术网

Batch file 测试文本列表中的变量以批量设置值

Batch file 测试文本列表中的变量以批量设置值,batch-file,for-loop,Batch File,For Loop,我拥有的是一个文本文档,其中包含了要设置和测试的变量,名为test.txt ab <-example variable 预期产量 0 实际产量 %ab% 这是一个非常简单的例子,但这就是问题所在 我试过打字 setlocal enabledelayedexpansion 在命令行中,但仅此一项不起任何作用 for /f %%a in ('type test.txt') do echo !%%a! 仅输出 !ab! 您有一个错误: setlocal enabledelayedex

我拥有的是一个文本文档,其中包含了要设置和测试的变量,名为test.txt

ab <-example variable
预期产量

0
实际产量

%ab%
这是一个非常简单的例子,但这就是问题所在 我试过打字

setlocal enabledelayedexpansion
在命令行中,但仅此一项不起任何作用

for /f %%a in ('type test.txt') do echo !%%a!
仅输出

!ab!
您有一个错误:

setlocal enabledelayedexpantion
                           ^ Here!
应该是:

setlocal enabledelayedexpansion
编辑:添加了示例会话

@ECHO关闭
SETLOCAL
对于('type q27262112.txt')中的/f%%a,请设置%%a=0
对于('type q27262112.txt')中的/f%%a,执行echo%%%a%
对于('type q27262112.txt')中的/f%%a,请调用echo%%%%%a%%
SETLOCAL ENABLEDELAYEDEXPANSION
对于('type q27262112.txt')中的/f%%a,请设置%%a=w
对于('type q27262112.txt')中的/f%%a,执行回显!%%A.
后藤:EOF
我使用了一个名为
q27262112.txt
的文件,其中包含用于测试的数据

这产生了以下输出:

%
0
w
这与您的结果不同,但演示了如何检索变量
ab
的值


我在
delayedexpansion
实例中将
ab
的值故意设置为some-value-other-to-0,以证明检索到的值确实被设置了,而不是宿醉。

您的修改解决了问题!我建议您回滚此修改;否则,你的问题现在是胡说八道,因为它不再失败了…但它没有解决批量测试的问题,也没有解决cmd的问题,它是一个环境发布者。。。在您发布此问题时,唯一的问题是
setlocal EnableDelayedExpansion
中的打字错误,这已得到证明。虽然
setlocal
命令在命令行中不起作用(如
setlocal/?
所示),但您在问题中没有提到这一点。如果你愿意的话,你可以发布一个关于这一点的新问题……我知道我错过了什么,原来延迟扩展只在批处理文件中有效。我只是在cmd中输入它,然后得到假阴性
C:\ type test.txt
ab


C:\ type test.bat
@echo off
setlocal enabledelayedexpansion

for /f %%a in ('type test.txt') do set %%a=0
for /f %%a in ('type test.txt') do echo !%%a!


C:\ test
0
%
0
w