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
作者: 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
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语句的作用,特来表示感谢!