中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 14:16
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:下例中,如何给10的整数倍赋值? 查看 1,961 回复 16
楼 主 求助:下例中,如何给10的整数倍赋值? 发表于 2008-08-10 11:59 ·  中国 山西 太原 迎泽区 联通
初级用户
积分 28
发帖 14
注册 2008-02-29 12:36
18年会员
UID 111702
性别 男
状态 离线
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 ]
2 发表于 2008-08-10 12:22 ·  中国 上海 杨浦区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
3 发表于 2008-08-10 12:32 ·  中国 山西 太原 迎泽区 联通
初级用户
积分 28
发帖 14
注册 2008-02-29 12:36
18年会员
UID 111702
性别 男
状态 离线
谢谢楼上的朋友。
看了你介绍的帖子,测试了一下,还是执行不通。望再赐教。
4 发表于 2008-08-10 17:26 ·  中国 山西 太原 迎泽区 联通
初级用户
积分 28
发帖 14
注册 2008-02-29 12:36
18年会员
UID 111702
性别 男
状态 离线
继续等待解答……
5 发表于 2008-08-10 18:51 ·  中国 上海 杨浦区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
你有没有看到我在那个帖子里『第 7 楼』的回复?
6 发表于 2008-08-10 19:10 ·  中国 山西 太原 迎泽区 联通
初级用户
积分 28
发帖 14
注册 2008-02-29 12:36
18年会员
UID 111702
性别 男
状态 离线
看到了:

『第 5 楼』:


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

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

注:请在 4DOS 下运行

但我要求是在XP的 dos 窗口下运行。
7 发表于 2008-08-10 19:14 ·  中国 山西 太原 迎泽区 联通
初级用户
积分 28
发帖 14
注册 2008-02-29 12:36
18年会员
UID 111702
性别 男
状态 离线
上面的语句中, if %@eval[%f %% 5]==0执行不通
8 发表于 2008-08-10 19:19 ·  中国 上海 杨浦区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
在 WindowsXP 下可用 4NT 或 Take Commander ,它们是 4DOS 在 Windows 下的继承。
9 发表于 2008-08-10 21:21 ·  中国 山西 太原 迎泽区 联通
初级用户
积分 28
发帖 14
注册 2008-02-29 12:36
18年会员
UID 111702
性别 男
状态 离线
Originally posted by DOSforever at 2008-8-10 07:19 PM:
在 WindowsXP 下可用 4NT 或 Take Commander ,它们是 4DOS 在 Windows 下的继承。


谢您的热心回复:)

我的问题还没得到解答,我只求在DOS下的解决方案。
10 发表于 2008-08-10 21:37 ·  中国 上海 杨浦区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
4DOS 就是在 DOS 下的,是 COMMAND 的完美替代。
11 发表于 2008-08-10 23:02 ·  中国 上海 奉贤区 电信
初级用户
积分 35
发帖 18
注册 2008-08-10 22:34
17年会员
UID 123138
性别 男
状态 离线
第一种方法,根据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 ]
12 发表于 2008-08-11 02:06 ·  中国 山西 太原 迎泽区 联通
初级用户
积分 28
发帖 14
注册 2008-02-29 12:36
18年会员
UID 111702
性别 男
状态 离线
是这样的:我写了一个批处理文件,要用到与提问类似的一句代码,尽管这句代码完全可以用别的语句组实现,但对于我来说,就等于预见问题绕开问题,而不是解决问题,所以才来求教的。
13 发表于 2008-08-20 17:23 ·  中国 山西 太原 迎泽区 联通
初级用户
积分 28
发帖 14
注册 2008-02-29 12:36
18年会员
UID 111702
性别 男
状态 离线
谢谢11楼朋友的回复,可,还是执行不通的
14 发表于 2008-08-21 07:07 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
@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
15 发表于 2008-08-22 09:59 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
把14楼的代码保存为xxx.bat
双击运行
论坛跳转: