标题: 关于批处理处理数值重复,取值和排除的问题
[打印本页]
作者: yk520
时间: 2009-4-8 10:22
标题: 关于批处理处理数值重复,取值和排除的问题
现在有一个经过复杂运算之后得出的一个数值,例如141.523,我想取前三为值 ,但要过滤重复数字之后的,显示结果为145,如果没有重复(如135.264,则取135)写入2.txt . 然后再写入除(如135)之外的号码(02467890)到3.txt
不知道能否实现,学习学习
作者: 26933062
时间: 2009-4-8 11:10
@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
作者: yk520
时间: 2009-4-8 11:21
辛苦了,谢谢楼上的朋友,学习了,很实用,比我自己的简单和强多了
作者: moniuming
时间: 2009-4-8 11:24
@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
作者: yk520
时间: 2009-4-8 11:28
高手!!向你们大家学习了
作者: netbenton
时间: 2009-4-8 13:06
@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
作者: yk520
时间: 2009-4-9 01:39
非常感谢!你的这段很实用,前面的两朋友,我在使用的时候,发现了问题,就是当我的数值为112.2,就是说只能取到两个值的时候,就显示错误,很感谢6楼的朋友,已经解决
作者: ligui0001
时间: 2009-4-9 03:42
不错