Подтвердить что ты не робот

Цитирование по строковым значениям из файла bat файла командной строки Windows

Я пытаюсь создать пакетную версию script для моей машины Windows, которая перебирает список значений (строка/десятичная) и использует каждое значение в качестве параметра внутри цикла.

Ниже приведен пример простого цикла, который я хотел бы использовать для отображения всех разных файлов версий (из моего списка).

FOR ? in ('1.1','1.2','2.4','3.9') do echo V[value_from_for_loop].txt

У меня возникли проблемы с тем, как прокручивать каждый элемент и использовать переменную в моем выражении echo.

4b9b3361

Ответ 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

Ответ 2

@Ответ на этот вопрос отлично работает,

вот как я его использовал, чтобы "пройти" предварительно заданный список файлов в определенном порядке.

@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 (....

Ответ 3

Предположим, у вас есть очень длинный список значений, который будет очень неудобно вводить в командной строке. Кроме того, существует ограничение длины для командной строки 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

Ответ 4

Это не позволит мне прокомментировать, но я хотел добавить сюда 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