中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 00:36
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » set/p=*<nul进行循环产生的怪异结果 查看 879 回复 5
楼 主 set/p=*<nul进行循环产生的怪异结果 发表于 2009-06-01 05:33 ·  中国 天津 联通
初级用户
积分 37
发帖 34
注册 2009-04-13 01:52
17年会员
UID 142798
性别 男
状态 离线
原想打印出如下图形
*
***
*****
*******
*****
***
*
编了如下程序
@echo off& setlocal enabledelayedexpansion
for /l %%i in (1,2,13) do (
if defined flag (set/a n-=2) else set/a n=%%i
for /l %%k in (1,1,!n!) do set /p=*<nul
echo.
if !n! geq 7 set flag=a
)
echo.&pause

显示结果为
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
自己看了半天,是在找不出来原因
哪位帮忙看一下?
人生有如此多东西值得去学!
2 发表于 2009-06-01 06:27 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
你的 set /p=*<nul 后面多了个空格
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
moniuming +9 2009-06-02 11:31
致精致简!
3 发表于 2009-06-01 08:21 ·  中国 江苏 无锡 电信
新手上路
积分 11
发帖 10
注册 2008-11-25 21:02
17年会员
UID 132088
性别 男
状态 离线
set /p=*<nul 後面空格有什麼用?
4 发表于 2009-06-01 12:13 ·  中国 天津 联通
初级用户
积分 37
发帖 34
注册 2009-04-13 01:52
17年会员
UID 142798
性别 男
状态 离线
确实是多了个空格的原因,在set/p=*<nul 后加了回车后效果就出来,但是这原因是什么?还望哪位解答一下!
我曾经专门在记事本中测试过空格行,空格对命令效果的影响,但也无法解释上述问题....

[ Last edited by jlty258 on 2009-6-1 at 12:15 ]
人生有如此多东西值得去学!
5 发表于 2009-06-01 22:12 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
原因很简单
因为cmd认为set /p set /p=*<nul(空格)与set /p=*(空格)<nul是一样的
这源于cmd的预处理机制
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
cad55 +8 2009-06-02 00:02
moniuming +9 2009-06-02 11:31
6 发表于 2009-06-02 01:18 ·  中国 天津 联通
初级用户
积分 37
发帖 34
注册 2009-04-13 01:52
17年会员
UID 142798
性别 男
状态 离线
原来如此,突然想起<nul是不忌放置地点的,放在最后与中间其实没区别
人生有如此多东西值得去学!
论坛跳转: