Цикл строковых значений из файла bat командной строки Windows - PullRequest
38 голосов
/ 09 августа 2010

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

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

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

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

Ответы [ 5 ]

53 голосов
/ 09 августа 2010
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
22 голосов
/ 15 мая 2013
Ответ

@ Јоей хорошо работает, вот как я его использовал,

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

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

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

=-=-=-=-=-=

** пс для списка имен файлов, предпочтительнее использовать что-токак это:

for %%e in (*.dll) do (....

14 голосов
/ 10 августа 2010

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

Как-то так, я считаю:

for %x in (1.1 1.2 2.4 3.9) do (
    echo V%x.txt
)
0 голосов
/ 06 декабря 2018

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