2014-12-03 110 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以表明檢索的值確實在設置,而不是宿醉。