2014-12-03 62 views
0

我有什么是文本文档充满变数的设置和测试名为test.txt的测试变量设置一批价值

ab <-example variable 

,并从列表中翻出一个批处理程序

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

预期输出

0 

实际输出

%ab% 

这是一个非常精简的例子,但也就是打字

​​ 在命令行

但单独剂量没有和

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

只是输出

我已经试过了问题
!ab! 
+0

您的修改解决了问题!我建议你回滚这个​​修改;否则,你的问题现在是废话,因为它不会失败... – Aacini 2014-12-03 17:49:08

+0

,但它并没有解决批量测试它的问题,而不是解决了问题,这是一个环境问题 – 2014-12-05 17:26:32

+0

Err ...唯一的问题在这个问题_as你发布it_是'setlocal enabledelayedexpanTion'中的错字,因为[我的答案](http://stackoverflow.com/questions/27262112/testing-variables-from-a-text-list-to-set价值在批/ 27262738#27262738)证明。虽然'setlocal'命令在命令行中不起作用(如'setlocal /?'所示),您在您的问题中没有提到这一点。如果你愿意,你可以发布一个关于这一点的新问题... – Aacini 2014-12-05 18:33:07

回答

2

你有一个错误:

setlocal enabledelayedexpantion 
         ^Here! 

它应该是:

​​

编辑例会话添加

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

良好的捕获,但问题仍然存在 – 2014-12-03 03:27:30

+0

你测试了它吗?看到我的编辑... – Aacini 2014-12-03 17:45:06

+0

我看到我错过了,结果延迟扩展只能在批处理文件中起作用。我只是将它输入到cmd并获得了错误的否定 – 2014-12-04 04:35:00

0
@ECHO OFF 
SETLOCAL 
for /f %%a in ('type q27262112.txt') do set %%a=0 
for /f %%a in ('type q27262112.txt') do echo %%%a% 
for /f %%a in ('type q27262112.txt') do CALL echo %%%%a%% 
SETLOCAL ENABLEDELAYEDEXPANSION 
for /f %%a in ('type q27262112.txt') do set %%a=w 
for /f %%a in ('type q27262112.txt') do echo !%%a! 
GOTO :EOF 

我用了一个包含数据名为q27262112.txt文件我测试。

这产生了以下的输出:

% 
0 
w 

这不同于你的结果,但演示如何检索变量ab的价值。

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