中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 19:54
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 不用变量延迟[setlocal enableDelayedExpansion]也可以计算
46 发表于 2008-06-26 19:18 ·  中国 北京 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
UID 87277
性别 男
来自 cmd.exe
状态 离线
call echo %var% ?
我怎么感觉如果
call echo %%var%%
Call一次加一对%
貌似..
47 发表于 2008-06-26 19:43 ·  中国 江苏 苏州 常熟市 电信
高级用户
★★
五星老土
积分 558
发帖 172
注册 2003-02-09 00:00
UID 881
性别 男
来自 江苏
状态 离线
45楼的代码真的是简洁明快。
我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
48 发表于 2008-06-27 02:16 ·  法国
高级用户
★★
积分 783
发帖 268
注册 2006-12-26 17:18
UID 74627
性别 男
状态 离线
但是我仍然申明
这种缩写很没有意思
先执行for再执行echo %n%
既简单又清晰
还不会出现我所说的上述问题


一行代码和几行代码 各有其优缺点

磨灭任何一方的作用都是不妥的

之所以缩成一行写 无非是想利用上call

从而说明 call一定程度上代替了 setlocal enabledelayedexpansion的作用

是否能够100%的代替? 不置可否!
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
49 发表于 2008-06-27 13:05 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
UID 59307
状态 离线
Originally posted by plp626 at 2008-6-26 18:53:
就一个变量延迟的讨论,竟然这么激烈,我是感觉楼主的代码没什么新鲜之处,我写"子过程"时常用到的.

不过我说个题外话, 楼主举的这个例子不 ...


其实就是因为想到你说的“子过程”,我才帖了个。这样除了这个地方,在其他要递加的地方也可以用到了。

还有就是我还有很多命令不熟悉,像find、findstr等。所以一些本可以简单的代码也写复杂了。
┌───────┐
├→学习→实践→┤
└───────┘
50 10楼代码有误 发表于 2009-08-07 04:15 ·  中国 广西 南宁 西乡塘区 电信
初级用户
★★
积分 99
发帖 53
注册 2006-08-18 18:44
UID 60809
状态 离线
Originally posted by PPdos at 2008-6-25 19:51:
如果想用中间的结果 也是可以的

(for /f "tokens=*" %i in ('dir /b') do set /a n+=1 >nul&call set _%n%=%i >nul)&call echo 目录下有%n%个文件(夹)

将代码复制粘贴到命令提示符,然后多运行几次,即可看到,数字一直在增加,与实际文本(夹)数量不符。

[ Last edited by asnahu on 2009-8-7 at 04:20 ]
论坛跳转: