2

У меня есть файл build.properties, который выглядит следующим образом:

ELECTRON_WIN_VERSION_NUMBER=1.7.0
ELECTRON_WIN_BUILD_NUMBER=11
ELECTRON_MAC_VERSION_NUMBER=1.7.0
ELECTRON_MAC_BUILD_NUMBER=11

у меня есть скрипт runme.bat, который выглядит так:

For /F "tokens=1* delims==" %%A IN ("build.properties") DO (
    IF "%%A"=="ELECTRON_WIN_VERSION_NUMBER" set ELECTRON_WIN_VERSION_NUMBER=%%B
    IF "%%A"=="ELECTRON_WIN_BUILD_NUMBER" set ELECTRON_WIN_BUILD_NUMBER=%%B
)

echo "%ELECTRON_WIN_VERSION_NUMBER%"
echo "%ELECTRON_WIN_BUILD_NUMBER%"

Когда он запускается, он выводит это:

""
""

Что я делаю не так, что не выдает:

"1.7.0"
"11"

1 ответ1

3

Что я делаю неправильно?

Ваша команда for анализирует строку "build.properties" а не содержимое файла build.properties .

Удалить цитаты.

Исправленный пакетный файл (test.cmd):

@echo off
For /F "tokens=1* delims==" %%A IN (build.properties) DO (
    IF "%%A"=="ELECTRON_WIN_VERSION_NUMBER" set ELECTRON_WIN_VERSION_NUMBER=%%B
    IF "%%A"=="ELECTRON_WIN_BUILD_NUMBER" set ELECTRON_WIN_BUILD_NUMBER=%%B
)

echo "%ELECTRON_WIN_VERSION_NUMBER%"
echo "%ELECTRON_WIN_BUILD_NUMBER%"

Выход:

> test
"1.7.0"
"11"
>

Что мне делать, если имя файла содержит пробелы?

В этом случае вы можете использовать type , чтобы вернуть содержимое файла для for разбора:

For /F "tokens=1* delims==" %%A IN ('type "build space.properties"') DO (

Заметки:

  • Одинарные кавычки ' для указания того, что команда должна быть обработана.
  • Двойные кавычки " используются для разделения имени файла, содержащего пробелы.

Вы также можете использовать for опции usebackq:

usebackq     Use the alternate quoting style:                        
                   - Use double quotes for long file names in "filenameset".
                   - Use single quotes for 'Text string to process'
                   - Use back quotes for `command_to_process`

Тогда команда for становится:

For /F "usebackq tokens=1* delims==" %%A IN ("build space.properties") DO (

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .