2014-02-07 2 views
1

Я пытаюсь пропустить каждую строку в текстовом файле и использовать содержимое строки в качестве переменной.Цикл через каждую строку в текстовом файле с переменными, партия

До сих пор у меня есть:

for /F "tokens=*" %%A in (mdbs.txt) do (
set var1=%%A 
echo "%var1%" > echo1.txt 
echo %var1% > echo2.txt 
echo set v > set.txt 
echo %%A > echo3.txt 
) 

Содержание mdbs.txt в настоящее время: Grounds_Maintenance.mdb

Так что я бы ожидать, каждый из эхо-файлов содержат «Grounds_Maintenance.mdb»

Однако они содержат:

Echo1.txt: ""

Echo2.txt: ECHO включен.

set.txt: установить v

Это, однако, пробегает по файлам, он просто не устанавливая переменный.

echo3.txt: Grounds_Maintenance.mdb

я должен что-то отсутствует простой. Я хочу использовать переменную, потому что я хочу позже удалить расширение, используя: set var1 =% var1: ~ 0, -4%

Я нахожусь в Windows 7. Спасибо.

ответ

4

Переменная задана, но вы не можете получить к ней доступ через процентное расширение внутри скобок.

Там существует второй способ для доступа к переменным, отложенное расширение

setlocal EnableDelayedExpansion 

for /F "tokens=*" %%A in (mdbs.txt) do (
    set "var1=%%A" 
    echo "!var1!" 
) 
+0

'>>% out% echo"! Var1! "' Просто печатает '! Var1!' Для меня. – m93a

+1

@ m93a Затем вы должны включить задержку расширения с помощью строки 'setlocal EnableDelayedExpansion' – jeb

3

Джеб ответил на ваш прямой вопрос.

Но нет причин назначать переменную окружения, если все, что вы хотите сделать, - это отменить расширение. Просто используйте модификатор ~n:

for /f "delims=" %%A in (mdbs.txt) do echo %%~nA 

Тип help for или for /? из командной строки и посмотреть в конце документации для получения дополнительной информации о модификаторов.

+0

Да, это лучшее решение здесь – jeb

Смежные вопросы