![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-02 02:01 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,279 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求教dos高手,set /p不支持管道的问题 |
| 可打印版本 1,828 / 13 |
| 第1楼 zhuoranv | 发表于 2010-04-09 02:14 |
| 新手上路 发帖 8 积分 8 | |
|
求教dos高手,set /p不支持管道的问题 求教dos高手:
已知: echo kkkk>yyy.txt set /p aa=<yyy.txt echo %aa% 以上会显示结果为kkkk。 但是为什么echo kkkk|set /p aa=不行呢? 到底set能否管道? |
|
| 第2楼 zaixinxiangnian | 发表于 2010-04-09 06:05 |
| 初级用户 发帖 106 积分 151 来自 河南省 | |
|
我试了下运行结果一样,,,麻烦高手进来给讲解下
|
|
| 第3楼 zhuoranv | 发表于 2010-04-09 11:36 |
| 新手上路 发帖 8 积分 8 | |
|
感谢先啊,请高手回答
|
|
| 第4楼 HAT | 发表于 2010-04-10 01:27 |
| 版主 发帖 5,017 积分 9,023 | |
|
echo kkkk|set /p aa=
这样写的目的是什么? |
|
| 第5楼 zhuoranv | 发表于 2010-04-10 12:28 |
| 新手上路 发帖 8 积分 8 | |
|
我是想给set赋值,因为用set提取变量的字符串很简单。
但是我又不想用for。虽然我知道: for /f %%i in ('echo kkkk') do set aa =%%i 可以达到用set赋值的目的,但是好多复杂的情况下,无法用预期所提取的内容,所以也就难以用for来提取内容。总之,我想,能否不用for,而是用call或 <&之类? 盼解 |
|
| 第6楼 HAT | 发表于 2010-04-10 13:58 |
| 版主 发帖 5,017 积分 9,023 | |
|
这不是赋值吗?
|
|
| 第7楼 exzzz | 发表于 2010-04-10 16:39 |
| 初级用户 发帖 167 积分 194 | |
|
不知道楼主要做什么。
echo kkkk|set /p aa= 直接写成 set aa=kkkk 就好了啊。 为什么要先echo呢??建议你把你要做的批处理贴出来,大家看一看才好说 |
|
| 第8楼 zhuoranv | 发表于 2010-04-11 13:52 |
| 新手上路 发帖 8 积分 8 | |
|
比如我想获取一个注册表的值吧,如获取壁纸所在位置,虽然可以如下写:
for /f "tokens=2*" %%i in ('reg query "HKCU\Control Panel\Desktop" /v Wallpaper^|find /i "reg_sz"') do echo "%%~dpj" pause 在这里好多朋友喜欢用for截取冒号:,来读取值,但是由于各种电脑的情况是不一样的,有些人的电脑采用的是%userprofile%等变量在注册表里写值的,所以用for截取冒号:就截取不到了。而用set由于可以指定字符串截取字符,所以更适合许多地方来准确的读取注册表的值。 说到底,就是喜欢set的简练的截取字符的用途。 |
|
| 第9楼 HAT | 发表于 2010-04-11 20:43 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 8 楼 你说了这么一大堆,跟set /p有啥关系?
|
|
| 第10楼 zhuoranv | 发表于 2010-04-12 11:29 |
| 新手上路 发帖 8 积分 8 | |
|
呵呵,是我表达的错误,但是,我的确很想知道set /p=为什么不能支持管道,而又能支持set /p=<aa.txt。我很想知道为什么?是不是用其他方法能使其支持?
望不吝赐教,感谢先 |
|
| 第11楼 exzzz | 发表于 2010-04-12 11:39 |
| 初级用户 发帖 167 积分 194 | |
|
我想或许是因为cmd只接受标准的文本输入,而 echo 输出的东西不是标准的格式文本,<aa.txt显然是标准的文本。
|
|
| 第12楼 exzzz | 发表于 2010-04-12 11:41 |
| 初级用户 发帖 167 积分 194 | |
Originally posted by zhuoranv at 2010-4-11 01:52 PM: 我记得不是很清楚了,但是好像注册表user那一块的内容,就是从localmachine影射过来的吧?? 貌似只要修改localmachine的就好了吧,而且应该就是个固定的位置,至少XP,2003是一样的运行效果。 |
|
| 第13楼 zhuoranv | 发表于 2010-04-12 11:55 |
| 新手上路 发帖 8 积分 8 | |
Originally posted by exzzz at 2010-4-12 11:41 AM: 是的,壁纸的确是固定位置,但是假如壁纸采用动态的如gif格式的,就不是这个位置了。 还有其他情况,如收藏夹的位置,我的文档的位置,现在的“优化版”的xp都将这些改到d盘去了。所以说,用for的方法来截取,往往会由于情况的不同而出错的几率更大些 |
|
| 第14楼 zhuoranv | 发表于 2010-04-12 20:36 |
| 新手上路 发帖 8 积分 8 | |
|
的确很想知道set /p=为什么不能支持管道,而又能支持set /p=<aa.txt。我很想知道为什么?是不是用其他方法能使其支持?
望不吝赐教,感谢先 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |