Пакет FOR, CALL: Почему я не могу передать токен моей подпрограмме? - PullRequest
1 голос
/ 28 января 2011

Это должно быть довольно просто. К сожалению, я тоже.

"filelist.txt" является выводом: dir / b

Этот код работает: для каждой строки в filelist.txt эта строка отображается, как и ожидалось.

for /F "tokens=*" %%A in (filelist.txt) do echo %%A

Этот код не работает: для каждой строки в filelist.txt выводится только имя переменной "% A".

for /F "tokens=*" %%A in (filelist.txt) do call :sub1
goto :eof
:sub1
echo %%A
goto :eof

Что я делаю не так? Заранее спасибо.

1 Ответ

4 голосов
/ 28 января 2011

Попробуйте:

@echo off
for /F "tokens=*" %%A in (filelist.txt) do call :sub1 %%A
goto :eof
:sub1
echo %1
goto :eof

Вам необходимо передать свой аргумент (%%A) подпрограмме ( arg guide ), а затем внутри подпрограммы вы можете получить к ней доступ по позиции (%1).

...