Можно ли установить вывод оператора пакетного файла в переменную, например:
findstr testing > %VARIABLE%
echo %VARIABLE%
windows
batch-file
Деннис
источник
источник
Ответы:
Я всегда использую USEBACKQ, так что если у вас есть строка для вставки или длинное имя файла, вы можете использовать двойные кавычки, не испортив команду.
Теперь, если ваш вывод будет содержать несколько строк, вы можете сделать это
источник
ENABLEDELAYEDEXPANSION
|
в этом случае это не работает.^|
вместо меня|
, как описано здесьcommand
нибудь захватить код выхода , пожалуйста? Я уверен, что он возвращает ненулевой код, но%ERRORLEVEL%
всегда содержит 0, независимо от того, где я пытаюсь его использовать (даже внутриdo
блока). Поэтому я думаю, что некоторая часть этойfor
конструкции перезаписывает ее. Кстати, невероятно, насколько безумно выглядящий код нужен для чего-то столь элементарного.Я нашел эту тему на этой вещицкой паутине. Сводится к:
Вы также можете перенаправить вывод команды во временный файл, а затем поместить содержимое этого временного файла в вашу переменную, например. Это не работает с многострочным вводом, хотя.
Кредит на ветку на аппаратном обеспечении Тома.
источник
в одну строку:
вывод команды будет установлен в% g, затем в VAR.
Дополнительная информация: https://ss64.com/nt/for_cmd.html.
источник
Читать файл ...
Написать файл
нота; пробелы перед символом <> приводят к добавлению пробела в конец переменной, также
Чтобы добавить в файл, как программа-регистратор, сначала создайте файл с одним ключом ввода, который называется e.txt.
ваш журнал будет выглядеть так
и так далее
В любом случае пара полезных вещей
источник
Эти ответы были настолько близки к ответу, что мне был нужен. Это попытка расширить их.
В пакетном файле
Если вы работаете из
.bat
файла и вам нужна одна строка, которая позволяет вам экспортировать сложную команду, например,jq -r ".Credentials.AccessKeyId" c:\temp\mfa-getCreds.json
в переменную с именем,AWS_ACCESS_KEY
тогда вы хотите это:В командной строке
Если вы в
C:\
приглашении хотите одну строку, которая позволяет вам выполнить сложную команду, например,jq -r ".Credentials.AccessKeyId" c:\temp\mfa-getCreds.json
для переменной с именем,AWS_ACCESS_KEY
тогда вы хотите это:объяснение
Единственное различие между двумя ответами выше состоит в том, что в командной строке вы используете один% в своей переменной. В пакетном файле вы должны удвоить процентные знаки (%%).
Поскольку команда включает двоеточия, кавычки и круглые скобки, необходимо включить
USEBACKQ
строку в параметры, чтобы можно было использовать обратные кавычки, чтобы указать команду для запуска, а затем всевозможные забавные символы внутри нее.источник
Если вы не хотите выводить во временный файл и затем читать в переменную, этот код сохраняет результат команды непосредственно в переменной:
Если вы хотите заключить строку поиска в двойные кавычки:
Если вы хотите сохранить этот код в пакетном файле, добавьте дополнительный символ%:
Полезный пример для подсчета количества файлов в каталоге и хранилище в переменной: (иллюстрирует трубопровод)
Обратите внимание на использование одиночных кавычек вместо двойных кавычек "или грависа` в командных скобках. Это чиста альтернатива
delims
,tokens
илиusebackq
вfor
цикле.Проверено на Win 10 CMD.
источник
источник
appcmd
не является стандартной программой, и я не вижу, где вы назначаете программный вывод переменной. В конце концов вам нужно еще несколько объясненийЯ проверил это так, и это сработало:
Путем передачи команды в переменную, запрос вставит результат команды "
Cmd
" в переменную "Var
".Обновить:
Это не работает, мой плохой, сценарий, который я сделал, был таким:
На самом деле он показывал, скажем, «
test.txt
», но на самом деле показывал результат команды «dir /b *.txt
», а неecho %var%
. Я запутался, так как оба выхода были одинаковыми.источник
pipe the command into a variable prompt
то вы должны были написать это,dir /b *.txt | SET /P Var=
чтобы получить правильное направление трубы. PS: это тоже не работает!Надеюсь это поможет
источник