在批处理脚本中获取输出范围

时间:2018-10-27 23:53:16

标签: batch-file

我正在制作一个批处理脚本,并在谷歌上搜索了如何将命令的输出放入变量中,但是此代码捕获了整个输出,因为我只需要前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 :(得分:0)

我无法在64位Windows上使用调试功能,因此未经测试:

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

或者准备用于调试的输入文件,其中也包含退出/退出命令。

答案 1 :(得分:0)

编辑:如果我很了解,您只需要剪断一个字符串即可。如果是这样,请在您之前的变量集中使用“:〜0,0”,其中每个0代表一个索引位置。例如: 以下各行将键入“ 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 .-