Получить диапазон вывода в пакетном скрипте - PullRequest
0 голосов
/ 28 октября 2018

Я делаю пакетный скрипт и гуглюсь, как поместить вывод команды в переменную, однако этот код захватывает весь вывод, так как мне нужны только первые 4 цифры до двоеточия.(в моем случае)

вот пример выходных данных debug.exe:

0ADE:0AC0

Итак, в этом случае значение myvar должно быть 0ADE.вот код:

for /f "tokens=* usebackq" %%a in (`echo s 100 8000 74 00 5c 00  4f`) do (set myvar=%%a)

Я думаю, что мне может понадобиться параметр delims, но я не могу понять, как использовать его с партией, как это.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

РЕДАКТИРОВАТЬ: Если я правильно понимаю, вам нужно всего лишь отрезать строку.Если это так, используйте «: ~ 0,0» в вашем предыдущем наборе переменных, где каждый 0 обозначает позицию индекса.EG: В каждой из следующих строк будет напечатано «Hello world!»

set random=Hello world!
echo %random%
echo %random:~0,5% world!
echo Hello %random:~6%

Что касается результата «debug.exe», возможно, вы можете передать его результаты во временный файл, вызвать его в пакете,и отрежьте результат.

Поскольку вы не поделились достаточным количеством кода, я не могу должным образом помочь вам, но я предложу что-то вроде этого:

@echo off

rem This will start debug.exe, and let's hope it allows to pipe the result to a file, as it does not always works.
start "" do.exe > "%temp%\log_file_debug.txt"

rem Wait until the output file is written.
echo Press any key once the application is finished.
pause > nul

rem Now lets retrieve the results from the previous file, and hope it have this format: 0ADE:0AC0
for /f "tokens=*" %%c in ('type "%temp%\log_file_debug.txt"') do set results=%%~c

rem As we have retrieved the results into a variable, let's snip it only for the 4 firts characters
set snip_result=%results:~0,4%

rem Your snipped code is now set in the variable snip_result. Check it out:
echo Check the result: %snip_result%

pause

Надеюсь, это поможет.С уважением.CM .-

0 голосов
/ 28 октября 2018

Я не могу использовать отладку на 64-битных окнах, поэтому не проверено:

@Echo off
for /f "delims=:" %%a in ('
    echo s 100 8000 74 00 5c 00  4f^|debug.exe file.dll
') do set "myvar=%%a"

Или подготовьте входной файл для отладки, который также содержит команду выхода / выхода.

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