中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于批处理处理数值重复,取值和排除的问题
作者:
标题: 关于批处理处理数值重复,取值和排除的问题 上一主题 | 下一主题
yk520
初级用户





积分 24
发帖 17
注册 2008-3-20
状态 离线
『楼 主』:  关于批处理处理数值重复,取值和排除的问题

现在有一个经过复杂运算之后得出的一个数值,例如141.523,我想取前三为值 ,但要过滤重复数字之后的,显示结果为145,如果没有重复(如135.264,则取135)写入2.txt .  然后再写入除(如135)之外的号码(02467890)到3.txt
不知道能否实现,学习学习

2009-4-8 10:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 2 楼』:  


@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




致精致简!
2009-4-8 11:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yk520
初级用户





积分 24
发帖 17
注册 2008-3-20
状态 离线
『第 3 楼』:  

辛苦了,谢谢楼上的朋友,学习了,很实用,比我自己的简单和强多了

2009-4-8 11:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 4 楼』:  


@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


2009-4-8 11:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yk520
初级用户





积分 24
发帖 17
注册 2008-3-20
状态 离线
『第 5 楼』:  

高手!!向你们大家学习了

2009-4-8 11:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 6 楼』:  

@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



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-4-8 13:06
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
yk520
初级用户





积分 24
发帖 17
注册 2008-3-20
状态 离线
『第 7 楼』:  

非常感谢!你的这段很实用,前面的两朋友,我在使用的时候,发现了问题,就是当我的数值为112.2,就是说只能取到两个值的时候,就显示错误,很感谢6楼的朋友,已经解决

2009-4-9 01:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ligui0001
初级用户





积分 58
发帖 41
注册 2009-4-3
状态 离线
『第 8 楼』:  

不错

2009-4-9 03:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: