如何在BAT中为一个变量赋予多行内容
我做一个BAT,在屏幕上输出GDISK返回的多行信息。但是这个程序之前的提示信息我要通过CLS清掉。所以我用for/f"skip=1tokens=*"%%ain('gdi...
我做一个BAT ,在屏幕上输出GDISK返回的多行信息。但是这个程序之前的提示信息我要通过CLS清掉。所以我用for /f "skip=1 tokens=* " %%a in ('gdisk32') do set di=%%i 来赋予变量的值。但是di只能被赋予最后一行的值。这个命令我应该怎么写 才能赋予DI多行的值。多几个变量也可以。必须赋予变量 以后的编辑还要用呢
展开
1个回答
展开全部
提供两种方法
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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询