none
CMD: присвоить переменной значение из файла RRS feed

  • Вопрос

  • Здравствуйте!

    Windows XP SP3, все указанные действия производятся в bat-файле.

    Не уверен, что правильно выбрал раздел, если нет - извините. Перечитал пол-Интернета --- советов море, но ни один не хочет работать. Складывается впечатление, что ошибаюсь в какой-то мелочи, оттого и не получается. Надеюсь, вы меня поправите.

    Есть файл logname.txt, содержащий в себе 1 строку: 12345678 bla bla

    Необходимо текст из этого файла засунуть в переменную VAR1.

    Каким образом это сделать? Буду благодарен, если перед написанием сюда вы сделаете у себя на пк bat-файл и проверите работоспособность.

    Приводить варианты, которые пробовал не стану, т.к. их много, но все они сильно похожи между собой, а главное - у меня они не работают.

    28 апреля 2015 г. 7:58

Ответы

  • вы путь пробовали полностью указать?

    если вы все равно что то планируете делать в поше то почему вы эту часть пытаетесь делать в смд?

    Лишь по той причине, что я не могу логировать полный вывод поша.

    Start-Transcript пишет слишком много лишней информации, а так же делает это в кодировке, которая не хочет нормально читаться блокнотом.

    На эту тему мною был создан топик: PowerShell: запуск и логирование скрипта из другого скрипта

    По поводу чтения переменной из файла - вопрос решен. Дело оказалось не в bat-файле, в котором работают все, предложенные тут методы, а в содержимом текстового файла. Файл сохранялся не в той кодировке.

    Но, быть может, Вы предложите более элегантный метод логирования пош-скриптов? Мне надо логировать всё, включая сообщения об ошибках, которые выдает пош-скрипт.

    На всякий случай напомню - ОС Windows XP, а значит PoSh 2.0


    • Изменено stakado 28 апреля 2015 г. 8:21
    • Помечено в качестве ответа Vector BCOModerator 13 ноября 2015 г. 14:03
    28 апреля 2015 г. 8:20

Все ответы

  • что вы хотите с этой переменной далее делать?

    28 апреля 2015 г. 8:01
    Модератор
  • @echo off
    for /F "delims=" %%i in (logname.txt) do set VAR1=%%i
    echo VAR1 = %VAR1%

    28 апреля 2015 г. 8:02
    Отвечающий
  • что вы хотите с этой переменной далее делать?

    Да, наверное стоило сразу подробнее описать что мне требуется. Чуть подкорректирую условия задачи, поставленной выше.

    Файл logname.txt содержит в себе имя лог-файла, вместе с путем к нему. Например:

    D:\Work\#dev\1C Maintance\PS\1C-CacheClear-Schedule\Logs\ADMIN_2015-04-28_11-02-32.log

    Я хочу в bat-файле прочитать эту строку из текстового файла в переменную %LogFile%, а далее выполнять скрипты с логированием в этот %LogFile%.

    Что-то типа:

    rem Чтение переменной %LogFile% из текстового файла logname.txt

    powershell .\1.ps1 >> %LogFile%


    28 апреля 2015 г. 8:05
  • @echo off
    for /F "delims=" %%i in (logname.txt) do set VAR1=%%i
    echo VAR1 = %VAR1%


    D:\Work\#dev\1C Maintance\PS\1C-CacheClear-Schedule>1.bat

    VAR1 =

    Не выводится значение переменной.
    28 апреля 2015 г. 8:06
  • Если добавить после @echo off:

    setlocal ENABLEDELAYEDEXPANSION

    И если в бате только команда:

    for /F "delims=" %%i in (logname.txt) do echo %%i

    28 апреля 2015 г. 8:09
    Отвечающий
  • вы путь пробовали полностью указать?

    если вы все равно что то планируете делать в поше то почему вы эту часть пытаетесь делать в смд?
    28 апреля 2015 г. 8:10
    Модератор
  • вы путь пробовали полностью указать?

    если вы все равно что то планируете делать в поше то почему вы эту часть пытаетесь делать в смд?

    Лишь по той причине, что я не могу логировать полный вывод поша.

    Start-Transcript пишет слишком много лишней информации, а так же делает это в кодировке, которая не хочет нормально читаться блокнотом.

    На эту тему мною был создан топик: PowerShell: запуск и логирование скрипта из другого скрипта

    По поводу чтения переменной из файла - вопрос решен. Дело оказалось не в bat-файле, в котором работают все, предложенные тут методы, а в содержимом текстового файла. Файл сохранялся не в той кодировке.

    Но, быть может, Вы предложите более элегантный метод логирования пош-скриптов? Мне надо логировать всё, включая сообщения об ошибках, которые выдает пош-скрипт.

    На всякий случай напомню - ОС Windows XP, а значит PoSh 2.0


    • Изменено stakado 28 апреля 2015 г. 8:21
    • Помечено в качестве ответа Vector BCOModerator 13 ноября 2015 г. 14:03
    28 апреля 2015 г. 8:20