Если я вас правильно понял, ваша внешняя программа будет генерировать список файлов. Затем вы хотите сохранить этот многострочный список переменной. Что вы хотите сделать с переменной после ее появления? Я предполагаю, что вы хотите удалить файлы, но ваш вопрос непонятен в этом вопросе, поэтому я постараюсь перекрыть ответ, чтобы его покрыть.
for /f "delims=" %%a in ('{command that generates your list}') do (
echo Doing stuff to %%a...
echo %%a>>listOfFilesToDelete.txt
set var=%%a
if "%var:~0,7%"="DoNotDelete" copy "%%a" \someArchiveFolder\
del "%%a"
)
Это будет читать каждую строку в списке генерируемой в качестве переменной %%a
. Затем он будет do
любых команд, которые вы указали. Таким образом, вы можете запустить команду для каждого из файлов в списке.В приведенном выше коде это
- Печать каждой строки в консоли, встроенной в какой-нибудь текст
- выводя его в файл
- Проверка первые 7 символов строки с указанной строкой, а затем скопировать его к папку, если она соответствует
- А затем удалить его
Если вам все еще нужно ссылаться на каждую строку из вашего сформированного списка, вы даже можете настроить массив типа структуры. (См Create list or arrays in Windows Batch)
setlocal EnableDelayedExpansion
:: Capture lines in an 'array'
set /a i=0
for /f "delims=" %%a in ('dir /b') do (
set /a i+=1
set var!i!=%%a
)
:: Loop through the 'array'
for /L %%a in (1,1,%i%) do (
echo Do more stuff with !var%%a!
)
Так же, как и выше, это будет читать каждую строку в списке генерируемой в качестве переменной %%a
. Затем он установит переменную var!i!
, равную значению текущей строки. Затем вы можете ссылаться на каждую строку как var1
, var2
и т. Д., Или, как показывает вторая секция, вы можете пропустить их все, используя for /L
. Однако вам нужно понять, как работать с задержанными переменными расширения.
'$ {p: DeleteFiles} будет заменен ..., который будет содержать список файлов, разделенных новой строкой.' - Тогда он не будет работать в файле bach! Поскольку это не задает многострочную переменную, она просто устанавливает первую строку, а оставшиеся строки приводят к ошибкам. – jeb