中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 01:05
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » FOR语句内使用SET设置不正常。
楼 主 FOR语句内使用SET设置不正常。 发表于 2009-07-10 16:55 ·  中国 广西 桂林 电信
新手上路
积分 2
发帖 2
注册 2009-07-03 12:16
UID 148638
性别 男
状态 离线
比如我有一个1.txt里面已经有一系列的数字。目前我想任意取1.txt内的两个数字相加,让他如果等于某一个数的话就显示出等式来。比如说,我要的结果是20,1.txt中刚好有一个11,一个9,则会显示:20=11+9

我的语句是这样的。

FOR /F %%I IN (1.TXT) DO (
FOR /F %%J IN (1.TXT) DO (
SET C=%%I
SET D=%%J
SET /A SUM=%c%+%d%
IF "%SUM%"=="%NUM%" ECHO %SUM%=%C%+%D%
)
)

可是SET语句好像没用了,希望大家教我下,我才学批处理没多久。
2 发表于 2009-07-11 02:38 ·  中国 广东 广州 电信
初级用户
★★
积分 111
发帖 62
注册 2007-12-31 20:10
UID 107336
性别 男
状态 离线
预处理问题,开启变量延迟或者使用call解决,具体方法请搜索论坛
3 发表于 2009-07-11 06:00 ·  中国 广西 桂林 电信
新手上路
积分 2
发帖 2
注册 2009-07-03 12:16
UID 148638
性别 男
状态 离线
其实set /a已经赋值成功的,用SET命令也可以查得到SUM具体的值,可就是在IF语句中,显示不出来。不知道怎么办。
4 发表于 2009-07-11 11:19 ·  中国 江苏 苏州 电信
初级用户
★★
积分 161
发帖 114
注册 2009-02-20 13:00
UID 139375
性别 男
状态 离线
小D也来了?楼主,小D都说了,你搜索下变量延时,Setlocal,然后你就明白你循环内的%C%,%D%该改为!C!,!D!了
5 发表于 2009-07-12 01:01 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
Originally posted by liaobiaoxing at 2009-7-11 06:00:
其实set /a已经赋值成功的,用SET命令也可以查得到SUM具体的值,可就是在IF语句中,显示不出来。不知道怎么办。




@echo off&setlocal enabledelayedexpansion
SET NUM=11
FOR /F %%I IN (1.txt) (
SET C=%%I
DO FOR /F %%J IN (1.txt) DO (
SET D=%%J
SET /A SUM=!c!+!d!
IF !SUM!==!NUM! ECHO !SUM!=!C!+!D!
)
)
pause
论坛跳转: