![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 09:24 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]不用for将输出结果赋给指点变量 |
| 可打印版本 1,549 / 13 |
| 第1楼 plp626 | 发表于 2008-01-26 00:45 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
[已结]不用for将输出结果赋给指点变量 其实很早就思考过这个问题,今天看了这个帖子,到了非解答不可的时候,
无奈没人注意这个帖子,哪就刺激一下!!! 新手(我其实也是新手)问 "如何统计一个文件中的空行数" 我最后得到了这样解答:(受5楼terse的启发) 请问: 不用for语句怎么将这个输出结果赋给一个变量,我用管道符|试了好多次,没能成功. 请参看12楼,7楼的回答也很有新意. 为了大家阅读清晰,去除了一些无关紧要的话.plp626于2007-1-29 0:30修改 [ Last edited by plp626 on 2008-1-29 at 02:53 PM ] |
|
| 第2楼 plp626 | 发表于 2008-01-26 01:00 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
没人,都回家过年去了,哎
slore兄,你还在线哪,帮我看看. |
|
| 第3楼 slore | 发表于 2008-01-26 01:02 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
不认为有什么命令可以直接得到。
不用for,batch削弱很多。。。 你不用for的思路是怎么样的呢? |
|
| 第4楼 plp626 | 发表于 2008-01-26 01:28 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
我就感觉怪了,一个find /c /v "" test.txt 就可以得到test.txt的行数
打印结果: ---------- test.TXT: 14 就这一行,我就是想用管道符将它赋给变量var 具体怎么我是乱试呢,让"---------- test.TXT: 14"整体传给变量var,然后再截取, 没思路,就是瞎碰,但我总觉得这个不难,因为我对许多命令都不很熟悉, echo.|(set /p var=...|(find /c /v "" test.txt)) 省略号表示我在这里思维有点中断. 你结合这个发散下,有什么不常用的内部命令想下 |
|
| 第5楼 terse | 发表于 2008-01-26 02:07 |
| 银牌会员 发帖 946 积分 2,404 | |
|
type tmp1.txt |find /c /v ""
这个统计总行数的 |
|
| 第6楼 plp626 | 发表于 2008-01-26 02:54 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
不错,可以的话就不用再截取了,
那我现在思维就悬在echo.|set /p var=...<(type test.txt|find /c /v "") ...仍表示我的思维在这里处于真空状态. 现在最关键的就是怎么赋值 这是问题的关键 [ Last edited by plp626 on 2008-1-26 at 02:57 AM ] |
|
| 第7楼 BatMan | 发表于 2008-01-27 14:40 |
| 初级用户 发帖 24 积分 54 | |
|
管道do sth | set /p xx=赋值方法貌似是不可能的,因为管道符创建了另一个上下文,管道里set的变量在语句结束就失效了,比如WinXP下这样...
可以看到输出的是 BB=haha 以及 环境变量 BB 没有定义 可以说明前面说的“另一个上下文”这个观点。 不用FOR不用临时文件直接把命令输出赋值给变量的方法,如果存在,还待高人指点。 ![]() |
|
| 第8楼 slore | 发表于 2008-01-27 16:00 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
。。。学习了……
我嘛,对BAT不熟,比较喜欢VBS脚本…… 那个处理字符串方便。。。 |
|
| 第9楼 gahoo | 发表于 2008-01-27 20:03 |
| 初级用户 发帖 19 积分 45 | |
|
我也在关注这个问题,不过还没什么更好的解决方案
|
|
| 第10楼 plp626 | 发表于 2008-01-28 18:19 |
| 银牌会员 发帖 1,020 积分 2,278 | |
| 第11楼 zerocq | 发表于 2008-01-28 20:25 |
| 中级用户 发帖 196 积分 458 | |
|
系统自带的命令好像无法实现,应该要使用外部工具
找了好久没发现 |
|
| 第12楼 3742668 | 发表于 2008-01-28 23:45 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
要临时文件还是要for,自己取舍吧. |
|
| 第13楼 zh159 | 发表于 2008-01-28 23:54 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by plp626 at 2008-1-28 18:19: nset为第三方软件 正如3742668说的: 1、for 2、临时文件 3、第三方软件 |
|
| 第14楼 everest79 | 发表于 2008-01-29 05:18 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
xp 命令行下是支持直接赋值的,不过,set命令不支持接收,期望在未来版本中支持
echo a|set a=/ |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |