(DOS命令行) echo abc | set /p a= 为什么不能给a赋值?
2个回答
展开全部
嗯,是很遗憾,没有一个简单命令直接把命令的结果赋给变量,解决方法;
1 把命令重定向再从文件赋给变量,如:
echo abc>temp.txt
set/p a=<temp.txt&del temp.txt
2 如果命令的结果可能不止一行,可以用for命令,它的功能很强大,带参数/f 的可以把命令的结果或打开某文件或字符串组逐行循环处理
1 把命令重定向再从文件赋给变量,如:
echo abc>temp.txt
set/p a=<temp.txt&del temp.txt
2 如果命令的结果可能不止一行,可以用for命令,它的功能很强大,带参数/f 的可以把命令的结果或打开某文件或字符串组逐行循环处理
追问
谢谢你的回答.
还有1点没明白,
set /p a= 为什么用输入重定向就行,用管道就不行?
都是标准输入呀?
追答
你说的很有道理,我也认为用管道应该可以,甚至比重定向更合情合理,但事实上不行。我还遇到过有的命令,说不上任何用的不合格之处,只是套在了复合语句中,莫名其妙出错,只好“认命”,以后回避这种用法——你我都不是原程序命令设计者,虽然为什么不行肯定是有原因的,就不要去钻“牛角尖”了。
展开全部
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
/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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询