中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 14:49
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于批处理处理数值重复,取值和排除的问题 查看 666 回复 7
楼 主 关于批处理处理数值重复,取值和排除的问题 发表于 2009-04-08 10:22 ·  中国 湖北 武汉 电信
初级用户
积分 24
发帖 17
注册 2008-03-20 22:07
18年会员
UID 113537
性别 男
状态 离线
现在有一个经过复杂运算之后得出的一个数值,例如141.523,我想取前三为值 ,但要过滤重复数字之后的,显示结果为145,如果没有重复(如135.264,则取135)写入2.txt . 然后再写入除(如135)之外的号码(02467890)到3.txt
不知道能否实现,学习学习
2 发表于 2009-04-08 11:10 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线

@echo off&setlocal enabledelayedexpansion
set n=141.523
set m=%n:.=%
for /l %%a in (0 1 9) do set m=!m:%%a= %%a!
for %%a in (%m%) do (
if not defined flag (
if not defined .%%a (
set .%%a=a
set a=!a! %%a
set /a max+=1
if !max! geq 3 set flag=a
)))
for /l %%a in (0 1 9) do if not defined .%%a set b=!b! %%a
echo !a: =!
echo !b: =!
pause
致精致简!
3 发表于 2009-04-08 11:21 ·  中国 湖北 武汉 电信
初级用户
积分 24
发帖 17
注册 2008-03-20 22:07
18年会员
UID 113537
性别 男
状态 离线
辛苦了,谢谢楼上的朋友,学习了,很实用,比我自己的简单和强多了
4 发表于 2009-04-08 11:24 ·  中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
@echo off
:aaa
Setlocal Enableextensions
set str=0123456789&set n=0
set /p in=in:
for /f "tokens=1,2 delims=." %%a in ("%in%") do (
set var=%%a%%b
)
:aa
if %n% geq 3 (
echo.不重复的前3位:%show%
echo.剩下的数字为:%str%
endlocal
goto :aaa
)
if not defined %var:~0,1% (
set %var:~0,1%=ok
set show=%show%%var:~0,1%
call set str=%%str:%var:~0,1%=%%
set /a n+=1
)
set var=%var:~1%
goto :aa
5 发表于 2009-04-08 11:28 ·  中国 湖北 武汉 电信
初级用户
积分 24
发帖 17
注册 2008-03-20 22:07
18年会员
UID 113537
性别 男
状态 离线
高手!!向你们大家学习了
6 发表于 2009-04-08 13:06 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
@echo off
set str=0123456789
:rep
set in=
set/p in=输入数据串:
if "%in%"=="" goto :eof
Setlocal ENABLEDELAYEDEXPANSION
set in=%in:.=%
set top=#
:lp
if "%in%"=="" goto :ok
if "!top:%in:~0,1%=!"=="!top!" (set top=%top%%in:~0,1%&set str=!str:%in:~0,1%=!)
set in=%in:~1%
if "%top:~0,-3%"=="" goto :lp
:ok
echo.%top:~1%
echo.%str%
endlocal&goto :rep
精简
=> 个人网志
7 发表于 2009-04-09 01:39 ·  中国 湖北 武汉 电信
初级用户
积分 24
发帖 17
注册 2008-03-20 22:07
18年会员
UID 113537
性别 男
状态 离线
非常感谢!你的这段很实用,前面的两朋友,我在使用的时候,发现了问题,就是当我的数值为112.2,就是说只能取到两个值的时候,就显示错误,很感谢6楼的朋友,已经解决
8 发表于 2009-04-09 03:42 ·  中国 江西 南昌 电信
初级用户
积分 58
发帖 41
注册 2009-04-03 00:04
17年会员
UID 141951
性别 男
状态 离线
不错
论坛跳转: