|
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
状态 离线
|
|
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 |
|
|
yk520
初级用户
积分 24
发帖 17
注册 2008-3-20
状态 离线
|
『第
7 楼』:
非常感谢!你的这段很实用,前面的两朋友,我在使用的时候,发现了问题,就是当我的数值为112.2,就是说只能取到两个值的时候,就显示错误,很感谢6楼的朋友,已经解决
|
|
2009-4-9 01:39 |
|
|
ligui0001
初级用户
积分 58
发帖 41
注册 2009-4-3
状态 离线
|
|
2009-4-9 03:42 |
|