Ответ 1
for %x in (1.1 1.2 2.4 3.9) do echo V%x.txt
Для использования в пакетном файле вам придется удвоить значение %
:
for %%x in (1.1 1.2 2.4 3.9) do echo V%%x.txt
Я пытаюсь создать пакетную версию script для моей машины Windows, которая перебирает список значений (строка/десятичная) и использует каждое значение в качестве параметра внутри цикла.
Ниже приведен пример простого цикла, который я хотел бы использовать для отображения всех разных файлов версий (из моего списка).
FOR ? in ('1.1','1.2','2.4','3.9') do echo V[value_from_for_loop].txt
У меня возникли проблемы с тем, как прокручивать каждый элемент и использовать переменную в моем выражении echo.
for %x in (1.1 1.2 2.4 3.9) do echo V%x.txt
Для использования в пакетном файле вам придется удвоить значение %
:
for %%x in (1.1 1.2 2.4 3.9) do echo V%%x.txt
@Ответ на этот вопрос отлично работает,
вот как я его использовал, чтобы "пройти" предварительно заданный список файлов в определенном порядке.
@echo off
for %%x in (
a.js
storage.js
logic.js
main.js
z.js
) do (
echo your file name is %%x
echo "%%x" is a cool name
echo.
echo =-=-=-=-=-=
echo.
)
причина, по которой он похож на вертикальный список, заключается в том, что будет проще добавлять или удалять больше элементов. (и "эхо" с "точкой" для одной пустой строки).
вывод будет выглядеть следующим образом:
C:\example>yourBatchName.cmd
your file name is a.js
"a.js" is a cool name
=-=-=-=-=-=
your file name is storage.js
"storage.js" is a cool name
=-=-=-=-=-=
your file name is logic.js
"logic.js" is a cool name
=-=-=-=-=-=
your file name is main.js
"main.js" is a cool name
=-=-=-=-=-=
your file name is z.js
"z.js" is a cool name
=-=-=-=-=-=
** p.s. для перечисления имени файла следует предпочесть использовать что-то вроде этого:
for %%e in (*.dll) do (....
Предположим, у вас есть очень длинный список значений, который будет очень неудобно вводить в командной строке. Кроме того, существует ограничение длины для командной строки DOS.
В этом случае значения могут храниться в произвольно длинном файле, по одному на строку. Назовите его my-values.list
, с содержимым, похожее на:
1.1
1.2
2.4
3.9
3.9.1
3.9.2
3.91
3.91.1
...
Теперь вы можете прочитать переменные из этого текстового файла, по очереди:
for /f "tokens=*" %a in (c:\path\to\my-values.list) do echo. Version%~nxa.txt
Это не позволит мне прокомментировать, но я хотел добавить сюда 2 цента. "Do" должен быть в той же строке, что и правильная скобка команды "for". Другими словами, это будет работать:
for %x in (1.1 1.2 2.4 3.9) do echo V%x.txt
... но это не будет:
for %x in (1.1 1.2 2.4 3.9)
do echo V%x.txt