Как записать значение переменной среды в текстовый файл? - PullRequest
0 голосов
/ 15 января 2020

Мне нужно записать десятичное значение, присвоенное переменной среды finalval, в текстовый файл следующим образом:

echo.%%finalval>>^C:\TempSetup\id.txt

Проблема заключается в том, что после выполнения, когда я go проверяет содержимое файла, фактическое значение finalval не записывается в файл, вместо этого оно просто записывается %finalval%.
. В предыдущих случаях использования одного и того же пакетного файла в том же стиле команды echo у меня не было проблем.

У меня есть enabled delayedexpansion как в первой строке, так и l oop, который я использую для записи в файл.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Вам не нужно включать enableDelayedExpansion, если вы не расширяете переменную позже в своем скрипте. Если вы уже установили «finalval» ранее:

set finalval=someNumber

Это то, как вы будете называть его позже:

echo.%finalval% >>C:\TempSetup\id.txt

Примечание. Когда вы перенаправляете вывод в «id». txt ", один карат> создаст файл. Двойной карат >> добавит файл. Это означает, что если вы продолжите запускать скрипт и ожидаете, что одно значение «X» будет в «id.txt», так как вы используете двойные караты, ваш вывод будет отражать «X» столько раз, сколько Вы запустили сценарий.

0 голосов
/ 15 января 2020

Существует метод, который кажется мало используемым, но хорошо работает, когда вы уверены, что ваша строка echo не начинается с символа, который можно экранировать. Метод состоит в том, чтобы сбежать, используя стандартный escape-символ, (знак вставки, ^) :

@For %%A In (0 1 2 3.0 4.1 5.2 10 21 32 String0 "String 1" "0 1 2")Do @Echo(^%%~A>>CON

Я использовал CON в приведенном выше коде для перенаправления на консоль устройство, вы, очевидно, можете изменить его на файл для вашей конкретной задачи c после тестирования.

Вывод должен выглядеть примерно так:

0
1
2
3.0
4.1
5.2
10
21
32
String0
String 1
0 1 2

Как В результате комментария Джеба, просто чтобы прояснить, идею можно проще показать, используя:

@Echo(^%%finalval>>"C:\TempSetup\id.txt"

Где %%finalval используется для представления, (следует заменить на) , сообщаемая переменная, содержащая десятичное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...