标题: FOR语句内使用SET设置不正常。
[打印本页]
作者: liaobiaoxing
时间: 2009-7-10 16:55
标题: FOR语句内使用SET设置不正常。
比如我有一个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语句好像没用了,希望大家教我下,我才学批处理没多久。
作者: defanive
时间: 2009-7-11 02:38
预处理问题,开启变量延迟或者使用call解决,具体方法请搜索论坛
作者: liaobiaoxing
时间: 2009-7-11 06:00
其实set /a已经赋值成功的,用SET命令也可以查得到SUM具体的值,可就是在IF语句中,显示不出来。不知道怎么办。
作者: czl1378
时间: 2009-7-11 11:19
小D也来了?楼主,小D都说了,你搜索下变量延时,Setlocal,然后你就明白你循环内的%C%,%D%该改为!C!,!D!了
作者: Hanyeguxing
时间: 2009-7-12 01:01
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