(DOS命令行) echo abc | set /p a= 为什么不能给a赋值?

DOS里变量赋值时有没有命令替换?即把一个命令的输出赋给一个变量?... DOS里变量赋值时有没有命令替换?即把一个命令的输出赋给一个变量? 展开
 我来答
yyykkkyyyy
2011-07-09 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3310万
展开全部
嗯,是很遗憾,没有一个简单命令直接把命令的结果赋给变量,解决方法;
1 把命令重定向再从文件赋给变量,如:
echo abc>temp.txt
set/p a=<temp.txt&del temp.txt
2 如果命令的结果可能不止一行,可以用for命令,它的功能很强大,带参数/f 的可以把命令的结果或打开某文件或字符串组逐行循环处理
追问
谢谢你的回答.

还有1点没明白,
set /p a= 为什么用输入重定向就行,用管道就不行?
都是标准输入呀?
追答
你说的很有道理,我也认为用管道应该可以,甚至比重定向更合情合理,但事实上不行。我还遇到过有的命令,说不上任何用的不合格之处,只是套在了复合语句中,莫名其妙出错,只好“认命”,以后回避这种用法——你我都不是原程序命令设计者,虽然为什么不行肯定是有原因的,就不要去钻“牛角尖”了。
东方书蝶丛唱
2020-02-18 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:27%
帮助的人:823万
展开全部
set
/p
赋值后是要按回车的
但是一般的选择项,是选了就直接执行下一句语句。
如下,choice就没问题,因为choice是输入就直接运行,不用回车
@echo
off
:hello
echo
a
|
choice
/c:"ab"
/m
"input
a
or
b"
if
errorlevel
2
goto
2
if
errorlevel
1
goto
1
:1
echo
1
pause
goto
hello
:2
echo
2
pause
goto
hello
pause
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式