中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-07 21:37
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 已结,一句FOR的语句。在2台电脑执行后的结果不一样, 查看 725 回复 5
楼 主 已结,一句FOR的语句。在2台电脑执行后的结果不一样, 发表于 2008-03-24 00:18 ·  中国 广东 广州 电信
中级用户
★★
积分 233
发帖 117
注册 2007-11-28 02:38
18年会员
UID 104005
性别 男
状态 离线
求助:一样的代码。在2台电脑执行后的结果不一样,


COLOR 1B
setlocal enabledelayedexpansion
for %%a in (*.dst) do (
set name=%%a
set name1=!name:~2,20!
ren !name! !name1!
)
pause


上面的是代码
我在XPSP1里运行。那它就只会删除前面的2个字符

但我在XPSP2里运行。那它就只会删除前面的4个字符
如果我把这里改成 set name1=!name:~2,20!
set name1=!name:~3,20!
那它就会删除前面6个字符 我真是想不通。

下面我截图传上来了





[ Last edited by dslz666 on 2008-3-24 at 09:57 PM ]
2 发表于 2008-03-24 03:07 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
从图中可以看出,第二张图中for是执行两次的。
3 发表于 2008-03-24 10:14 ·  中国 广东 广州 白云区 电信
中级用户
★★
积分 233
发帖 117
注册 2007-11-28 02:38
18年会员
UID 104005
性别 男
状态 离线
我都是打开这个文件,不是我人为执行2次,应该是系统执行了2次,
就是上面的代码,别人执行也会出现那样的情况
4 发表于 2008-03-24 12:14 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
问题就在于改名后的文件也在搜索范围之内,有点死循环的意思。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
5 发表于 2008-03-24 12:15 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
for /f %a in ('dir /b *.dst') do (...)
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
6 发表于 2008-03-24 21:56 ·  中国 广东 广州 花都区 电信
中级用户
★★
积分 233
发帖 117
注册 2007-11-28 02:38
18年会员
UID 104005
性别 男
状态 离线
谢谢Climbing 问题解决
用DIR就可以了,
论坛跳转: