Переменная не хранит правильную строку - PullRequest
0 голосов
/ 23 января 2019

Я создал этот пакетный скрипт для удаления затемнения.

C:\oem\agent_inst\bin\emctl status blackout > c:\temp\bo_status.txt | for /F "tokens=2 delims==" %%a in ('findstr Blackoutname c:\temp\bo_status.txt') do SET bo=%%a
C:\oem\agent_inst\bin\emctl stop blackout %bo%
del c:\temp\bo_status.txt

и содержимое моего c:\temp\bo_status.txt файла указано ниже:

Blackoutname = abc_12__america Targets = (america.host.com,) Time = ({2019-01-23 | 12: 27: 47 | 720 мин., |}) Истек срок действия = Неверно

, но когда я запускаю пакетный скрипт, он не принимает это затемненное имя (abc_12__america), а продолжает принимать abc_1__america имя в переменной %bo%. Я не уверен, как это имя застряло в буфере.

Ниже приведен вывод, когда я запускаю пакетный скрипт

c:\>bo_stop.bat

c:\>C:\oem\agent_inst\bin\emctl status blackout   1>c:\temp\bo_status.txt  | for /F "tokens=2 delims==" %a in ('findstr Blackoutname c:\temp\bo_status.txt') do SET bo=%a

c:\>C:\oem\agent_inst\bin\emctl stop blackout  abc_1__america
Blackout stop Error : Blackout "abc_1__america" does not exist

пожалуйста, помогите мне в этом, пожалуйста.

1 Ответ

0 голосов
/ 23 января 2019

Трубопровод здесь не имеет никакого смысла.На правой стороне канала файл еще не создан, в результате чего «ничего не найдено», поэтому переменная bo просто сохраняет свое предыдущее содержимое.Не используйте pipe:

call "C:\oem\agent_inst\bin\emctl" status blackout > c:\temp\bo_status.txt
for /F "tokens=2 delims==" %%a in ('findstr Blackoutname c:\temp\bo_status.txt') do SET bo=%%a
call "C:\oem\agent_inst\bin\emctl" stop blackout %bo%
del c:\temp\bo_status.txt

Причина, по которой ваш скрипт отказался от продолжения, заключается в том, что emctl является командным файлом.Просто выполнить его с его именем означает передать ему управление (оно никогда не вернет управление вашему исходному сценарию).Чтобы иметь возможность вернуться, вам нужно call.(измененный код выше, чтобы отразить это, чтобы помочь будущим читателям)

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