Я пытаюсь прочитать вывод команды (которая выводится в несколько строк) и использовать произвольное количество этих строк. Поскольку я не знаю ни количества строк, ни количества строк, которые будут использоваться, мне нужно проанализировать и, возможно, использовать каждую строку в цикле, поэтому у меня есть setlocal enabledelayedexpansion
.
Ниже приведен фрагмент кода, который показывает процесс принятия команды и чтения каждой строки (еще не используя ее, просто прочитав ее, чтобы убедиться, что это работает (чего не происходит)):
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('svn status') do (
echo %%i
set file=%%i
echo *!file!
)
Проблема, с которой я сталкиваюсь, заключается в том, что считываемые значения %%i
не верны в строке for
. Первый символ отсутствует в первой строке ввода (что важно, потому что я использую первую строку, чтобы решить, использовать эту строку или нет).
Вывод из моего кода выглядит следующим образом:
Dir0\TestDoc7.txt
? StatusFile.txt
Принимая во внимание, что я запускаю этот код:
copy /y NUL StatusFile.txt >NUL
>StatusFile.txt (
svn status
)
(Это просто еще один способ увидеть реальный вывод svn status
) Я получаю правильный вывод в текстовый файл:
! Dir0\TestDoc7.txt
? StatusFile.txt
Я, вероятно, совершаю довольно явную ошибку, поскольку я довольно плохо знаком с пакетным скриптингом.
Заранее спасибо.