/ / Введення вихідного файлу в var - batch-файл, cmd

Введення вихідного файлу в var - пакетний файл, cmd

У мене є легкий .bat файл

%2 >file.tmp
set /p %1=<file.tmp

Я сподіваюся використовувати цей сценарій таким чином:

putVar var1 command.bat

Він повинен отримати перший рядок виводу command.bat у змінну var1 і після цього я повинен мати можливість використовувати var1 змінну, наприклад

putVar var1 command.bat
echo %var1%

На жаль, це не працює. Як отримати цю роботу? Можливо, є якийсь простіший спосіб?

Відповіді:

0 для відповіді № 1

Ваша проблема полягає в тому, що у вашому зразку коду запущена команда (command.bat) - пакетний файл, який викликається з пакетного файлу, і якщо з пакетного файлу ви викликаєте інший пакетний файл без call команду, тоді виконання не повертається до пакету абонента.

Щоб зберегти синтаксис, можна використовувати

(cmd /c "%~2")>file.tmp
set /p "%~1="<file.tmp

нерест другого екземпляра cmd обробляти команду, перенаправляючи її вивід до тимчасового файлу, а потім читаючи файл (тільки перший рядок command.bat виведення) у змінну.

Простіше це зробити for /f

for /f "delims=" %%a in ("%~2") do set "%~1=%%a"

які, більш-менш, виконують ту ж роботу. Запустіть команду вилучення виводу і, в цьому випадку, перегляньте вихід команди команди, призначивши кожному з рядків command.bat вивести на змінну. Очевидно, що всередині змінної буде збережено лише останній рядок, оскільки цикл перезапише його значення в кожній ітерації.