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