Board logo

标题: 关于批处理处理数值重复,取值和排除的问题 [打印本页]

作者: 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
不错