Лучший отвечающий
CMD: присвоить переменной значение из файла

Вопрос
-
Здравствуйте!
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Отвечающий -
вы путь пробовали полностью указать?
если вы все равно что то планируете делать в поше то почему вы эту часть пытаетесь делать в смд?- Изменено Vector BCOModerator 28 апреля 2015 г. 8:12
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