中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 如此截取变量为什么会出错 上一主题 | 下一主题
hnlcc
新手上路





积分 12
发帖 5
注册 2006-11-13
状态 离线
『楼 主』:  如此截取变量为什么会出错

请问这个要如何实现?本意是想生成一个个的等腰三角形(竖着的),但是在delay2中对var进行截取的时候老是显示不出来,我刚学习批处理,请高手指教 一下,这个问题困惑了很久
以下就是代码了
==================================================
@echo off
echo ===================================
echo  time color
echo ===================================

set /a i=1
set var=

:delay1

set var=%var%★
echo %var%
set  /a i+=1
ping /n 1 127.0>nul
if %i%==20 (goto delay2) else goto delay1

:delay2
set var=%%var:~1,-%i%%
@echo %var%
set /a i-=1
ping /n 1 127.0>nul
if %i%==1 (set var=&goto delay1) else goto delay2

:end
pause
================================================

[ Last edited by bjsh on 2007-7-31 at 12:44 AM ]

2007-7-12 23:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 2 楼』:  



  Quote:
:delay2
set var=%%var:~1,-%i%%
@echo %var%

改为

  Quote:
:delay2
set var=%var:~1,20%
echo.%var%

[ Last edited by bjsh on 2007-7-13 at 12:23 AM ]

2007-7-13 00:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hnlcc
新手上路





积分 12
发帖 5
注册 2006-11-13
状态 离线
『第 3 楼』:  

谢谢班班,这个是可以的,我还想问一下当我在做下面这个
==============================
set /a i=1
set var=abcdefg
:delay
set /a i+=1
set var=%var:~1,%i%%
echo var
if i == 5 (goto :delay) else goto eof
==============================

做这个的时候老是会出错误,不是打出b bc bcd .....这样的序列,而是直接把%var:~1,%i%%这样的字符串打出来了,请问一下我要的功能如何实现呢?就是在i++的时候对var进行截取,我看过别人的程序,对%这个的用法还是不太清楚,高手给解释一下,谢谢

2007-7-13 22:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 4 楼』:  

你上面的的 程序除了 在逻辑上有错误;
语法上也有几处错误;

这个
echo var
应该为 echo %var% 吧;

if i == 5 (goto :delay) else goto eof 这句在语法上 goto :eof ;

逻辑上 运行到此处直接 退出了 并不会 goto delay(一般goto到标签; 不在标签前面加冒号除了特殊的 eof; call 标签是加冒号的;)

================================
set var=%var:~1,%i%%

需要用

call set var=%%var:~1,%i%%%

可以参考下面的帖子
http://www.cn-dos.net/forum/view ... p;highlight=%2Bbjsh

===================================
或许得到的结果依然有一部分不是你想要的;
你需要好好理解 变量字符的截取;
看看 set /? 翻翻以前的帖子;

2007-7-14 00:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hnlcc
新手上路





积分 12
发帖 5
注册 2006-11-13
状态 离线
『第 5 楼』:  

班班说的太对了,呵呵,上面那些逻辑和语法错误是意外,意外呵呵。谢谢啦~~

2007-7-14 13:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
luckydjc
新手上路




积分 4
发帖 2
注册 2007-7-25
状态 离线
『第 6 楼』:  

努力学习中....

2007-7-25 20:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: