返回列表 发帖
@echo off&setlocal enabledelayedexpansion
(for /f "tokens=*" %%a in (a.txt) do (
  for %%i in (%%a) do set "var=00%%i" & echo !var:~-3!
))>a_tmp.txt
for /f "tokens=* delims=0" %%a in ('sort a_tmp.txt') do (
  set var=%%a
  for %%i in (#!var:~-1!) do set %%i=!%%i! %%a
)
for /l %%a in (0 1 9) do if defined #%%a echo %%a!#%%a!
del a_tmp.txt & pauseCOPY

[ 本帖最后由 tireless 于 2009-4-14 11:50 编辑 ]

TOP

回复 23楼 的帖子

call 的效率比 for 差。(命令耗时清单)

以下是用 timeit.exe 测出的结果:
Average for terse.bat key over 5 runs

Version Number:   Windows NT 5.1 (Build 2600)
Exit Time:        10:32 am, Tuesday, April 14 2009
Elapsed Time:     0:00:00.056
Process Time:     0:00:00.062

System Calls:     5282
Context Switches: 327
Page Faults:      586
Bytes Read:       17129
Bytes Written:    0
Bytes Other:      72752


Average for terse_call.bat key over 5 runs

Version Number:   Windows NT 5.1 (Build 2600)
Exit Time:        10:32 am, Tuesday, April 14 2009
Elapsed Time:     0:00:00.143
Process Time:     0:00:00.156

System Calls:     4479
Context Switches: 658
Page Faults:      688
Bytes Read:       23031
Bytes Written:    6220
Bytes Other:      78810

[ 本帖最后由 tireless 于 2009-4-14 10:32 编辑 ]

TOP

@echo off&setlocal enabledelayedexpansion
(for /f "tokens=*" %%a in (a.txt) do (
  for %%i in (%%a) do set "var=00%%i" & echo !var:~-3!
))>a_tmp.txt
for /f "tokens=* delims=0" %%a in ('sort a_tmp.txt') do (
  set var=%%a
  for %%i in (#!var:~-1!) do (
    set "var=!%%i! "
    if "!var: %%a =!"=="!var!" set %%i=!%%i! %%a
  )
)
for /l %%a in (0 1 9) do if defined #%%a echo %%a!#%%a!
del a_tmp.txt & pauseCOPY

TOP

回复 32楼 的帖子

处理了                                                                                                                   .

TOP

回复 34楼 的帖子

for %%i in (#!var:~-1!) do (
    set "var=!%%i! "
    if "!var: %%a =!"=="!var!"
set %%i=!%%i! %%a
  )

这个 for 处理了重复数字。我没有把每个数字设为变量,只用了这些变量:var、#0 至 #9

[ 本帖最后由 tireless 于 2009-4-14 21:04 编辑 ]

TOP

回复 36楼 的帖子

不会显示重复数字啊。

TOP

返回列表