加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.com/)- 科技、建站、内容创作、云计算、网络安全!
当前位置: 首页 > 综合聚焦 > Windows > 正文

windows – 批处理 – 将命令输出存储到变量(多行)

发布时间:2020-07-16 11:28:07 所属栏目:Windows 来源:互联网
导读:我知道这样做的方法有点像作弊但下面的代码创建一个临时文件,然后删除它.我不希望这种情况发生.这样做有适当或更好的方法吗? command 2 tempset /p OUTPUT=tempdel tempecho %OUTPUT% 我知道有一个使用for循环的解决方案但是对于返回多行结果的命令不起作用.

我知道这样做的方法有点像作弊但下面的代码创建一个临时文件,然后删除它.我不希望这种情况发生.这样做有适当或更好的方法吗?

command 2>> "temp"
set /p OUTPUT=<"temp"
del "temp"
echo %OUTPUT%

我知道有一个使用for循环的解决方案但是对于返回多行结果的命令不起作用.我想将所有这些存储到我的变量中. (我试过这个code顺便说一下)

您可以将其包含在包含换行符的单个变量中.
setlocal EnableDelayedExpansion
set LF=^


REM The two empty lines are required here
set "output="
for /F "delims=" %%f in ('dir /b') do (
    if defined output set "output=!output!!LF!"
    set "output=!output!%%f"
)
echo !output!

但是由于嵌入式换行,以后处理数据可能有点棘手.
并且每个变量仍然有8190个字符的限制.

通常使用数组更容易.

setlocal EnableDelayedExpansion
set "output_cnt=0"
for /F "delims=" %%f in ('dir /b') do (
    set /a output_cnt+=1
    set "output[!output_cnt!]=%%f"
)
for /L %%n in (1 1 !output_cnt!) DO echo !output[%%n]!

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读