Board logo

标题: 求助:下例中,如何给10的整数倍赋值? [打印本页]

作者: lummox     时间: 2008-8-10 11:59    标题: 求助:下例中,如何给10的整数倍赋值?

For /L %%f in (1,1,31) Do if %%f == 10的整数倍 (echo 10的倍数) else (echo %%f)

pause

又记:
    原来设想用 if %%f ==%%f/10*10,可惜不接受。

[ Last edited by lummox on 2008-8-10 at 09:17 PM ]
作者: DOSforever     时间: 2008-8-10 12:22
参考一下这个:

http://www.cn-dos.net/forum/viewthread.php?tid=41843
作者: lummox     时间: 2008-8-10 12:32
谢谢楼上的朋友。
看了你介绍的帖子,测试了一下,还是执行不通。望再赐教。
作者: lummox     时间: 2008-8-10 17:26
继续等待解答……
作者: DOSforever     时间: 2008-8-10 18:51
你有没有看到我在那个帖子里『第 7 楼』的回复?
作者: lummox     时间: 2008-8-10 19:10
看到了:

『第 5 楼』:  


CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------

for/l %f in (1,1,20) if %@eval[%f %% 5]==0 echo %f

注:请在 4DOS 下运行

但我要求是在XP的 dos 窗口下运行。
作者: lummox     时间: 2008-8-10 19:14
上面的语句中, if %@eval[%f %% 5]==0执行不通
作者: DOSforever     时间: 2008-8-10 19:19
在 WindowsXP 下可用 4NT 或 Take Commander ,它们是 4DOS 在 Windows 下的继承。
作者: lummox     时间: 2008-8-10 21:21


  Quote:
Originally posted by DOSforever at 2008-8-10 07:19 PM:
在 WindowsXP 下可用 4NT 或 Take Commander ,它们是 4DOS 在 Windows 下的继承。

谢您的热心回复:)

我的问题还没得到解答,我只求在DOS下的解决方案。
作者: DOSforever     时间: 2008-8-10 21:37
4DOS 就是在 DOS 下的,是 COMMAND 的完美替代。
作者: shqf     时间: 2008-8-10 23:02
第一种方法,根据10的倍数个位上都是0的特点,利用SET提取个位数字再作判断(不具有通用性):
@echo off&setlocal enabledelayedexpansion
for /L %%f in (1,1,31) Do (set a=%%f&if !a:~-1! equ 0 (echo %%f是10的倍数) else (echo %%f))
pause

第二种方法,利用%作取余运算,再作判断(具有通用性,如要输出3的倍数等等也行):
@echo off&setlocal enabledelayedexpansion
for /L %%f in (1,1,31) Do (set /a a=%%f%%10&if !a! equ 0 (echo %%f是10的倍数) else (echo %%f))
pause

[ Last edited by shqf on 2008-8-10 at 11:04 PM ]
作者: lummox     时间: 2008-8-11 02:06
是这样的:我写了一个批处理文件,要用到与提问类似的一句代码,尽管这句代码完全可以用别的语句组实现,但对于我来说,就等于预见问题绕开问题,而不是解决问题,所以才来求教的。
作者: lummox     时间: 2008-8-20 17:23
谢谢11楼朋友的回复,可,还是执行不通的
作者: lxmxn     时间: 2008-8-21 07:07

@echo off&setlocal EnableDelayedExpansion

for /L %%a in (1,1,31) do (
        set /a re=%%a%%10
        if "!re!" == "0" (echo %%a是 10 的整数倍) else (echo %%a)
)
pause

作者: HAT     时间: 2008-8-22 09:59
把14楼的代码保存为xxx.bat
双击运行
作者: lummox     时间: 2008-8-22 13:15
谢谢16楼的朋友
是的,保存了。执行后显示的是1至31,我要的是在10,20,30时有不同的显示。
作者: lummox     时间: 2008-8-23 00:53
谢谢 shq f朋友 和lxmxn 版主!

看到你们的回帖我就立刻下载测试,为了测试时能直观地看到,就把@echo off& setlocal EnableDelayedExpansion语句删掉了,测试的结果当然不会正确。

刚才又上来看你们的回复,完整粘贴后测试,正确通过。至此才知道setlocal EnableDelayedExpansion语句的作用,特来表示感谢!