如何在BAT中为一个变量赋予多行内容

来源:百度知道 编辑:UC知道 时间:2024/06/18 05:51:48
我做一个BAT ,在屏幕上输出GDISK返回的多行信息。但是这个程序之前的提示信息我要通过CLS清掉。所以我用for /f "skip=1 tokens=* " %%a in ('gdisk32') do set di=%%i 来赋予变量的值。但是di只能被赋予最后一行的值。这个命令我应该怎么写 才能赋予DI多行的值。多几个变量也可以。必须赋予变量 以后的编辑还要用呢

提供两种方法

1.用一个临时文件
::把gdisk32的输出放入临时文件_gdisk32.tmp
gdisk32>>_gdisk32.tmp

::把_gdisk32.tmp的内容回显到屏幕
type _gdisk32.tmp

::如果程序需要调用的话再用for语句取
for /f "skip=1 tokens=*" %%a in (_gdisk32.tmp) do something

2.自定义一个分隔符,把所有内容附加到一个变量
比如说gdisk32的输出中不包含$符号,就用$作为行分隔符

::由于要在for语句中循环赋值,必须打开延缓变量替换
setlocal enabledelayedexpansion

::把每次取到的%%i值附加到原来的字符串di后面,中加插入一个$号
for /f "skip=1 tokens=* " %%a in ('gdisk32') do set di=!di!$%%i

::取回变量时用¥断句
for /f "delims=$ tokens=1,2,3" %%a in ('echo %di%') do something