[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

回复 40楼 的帖子

38楼用到的外部命令只有一个sort.exe
如果你机器上没有可以到别人机器上拷贝一个过来
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

自己想的,没有实现排序:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (0 1 9) do (
  3.     for /f "delims=" %%j in (a.txt) do (
  4.         for %%k in (%%j) do (
  5.             set num=%%k
  6.             if "!num:~-1,1!"=="%%i" set _%%i=!_%%i! !num!
  7. )
  8. )
  9. if "!_%%i!" neq "" echo %%i !_%%i!
  10. )
  11. pause
复制代码
(*^_^*)

TOP

回复 4楼 的帖子

for 比 call 快多了,但是用 for /l 似乎没必要,白浪费了9次循环,直接用 for 不是更好吗?
for %%i in (%%a) do set .%%a=!.%%a! 。。。。
技术问题请到论坛发帖求助!

TOP

to:随风

随风的贴子测了一下,不能运行,可能和我的win2000系统有关

[ 本帖最后由 tyc 于 2009-4-15 09:33 编辑 ]

TOP

我试试

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::先排序,再按尾数取
  4. ::第一步构建一维数组,并给每个元数武值
  5. for /f "delims=*" %%i in (a.txt) do (
  6.   for %%j in (%%i) do (
  7.       set /a n+=1&set _!n!=%%j
  8. )
  9. )
  10. ::用选择法排序
  11. rem echo %n%
  12. for /l %%i in (1,1,%n%) do (
  13.   set /a m=%%i+1
  14.   for /l %%j in (!m!,1,%n%) do (
  15.        if !_%%i! gtr !_%%j! (
  16.             set /a t=_%%i
  17.             set /a _%%i=!_%%j!
  18.             set /a _%%j=t  
  19. )
  20. )
  21. )
  22. ::按尾数取
  23. for /l %%i in (1,1,%n%) do (
  24.      for /l %%j in (0,1,9) do (
  25.        if !_%%i:~-1! ==%%j set a_%%j=!a_%%j! !_%%i!
  26. )
  27. )
  28. ::输出
  29. for /l %%k in (0,1,9) do (
  30. if !a_%%k! neq 0 echo %%k  !a_%%k!
  31. )
  32. rem set a_
  33. rem set _
  34. pause>nul
复制代码
缺点是建一维数组时变量过多,优点是易读易写

TOP

  1. @echo off
  2. if "%~1"=="b" (
  3.    setlocal enabledelayedexpansion
  4.    for /f "delims=" %%a in (a.txt) do (
  5.       for %%i in (%%a) do (
  6.          set "var=     %%i"
  7.          echo !var:~-1! !var:~-5!
  8. ))
  9. exit /b
  10. )
  11. setlocal enabledelayedexpansion
  12. for /f "tokens=1* delims= " %%a in ('%~s0 b^|sort') do set .%%a=!.%%a! %%b
  13. for /l %%a in (0 1 9) do if defined .%%a echo %%a !.%%a!
  14. pause
复制代码
1

评分人数

技术问题请到论坛发帖求助!

TOP

回复 36楼 的帖子

不会显示重复数字啊。

TOP

回楼上,事实胜于雄辩,兄弟还是先测试下吧。。。
***共同提高***

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

你楼上的代码没有处理,如果处理就要在下面这句中用if来处理:
for %%i in (%%a) do set "var=00%%i" & echo !var:~-3!
你这样就是将相同值多次赋值,只保留下最后的一次赋值,也就
是说无论数字中有多少个值相同,结果也只会有一个数字被输出
,如下面这一段代码:
  1. @echo off
  2. for %%a in (1 1 2 3 3 4 4) do set "_%%a=%%a"
  3. set _
  4. pause>nul
复制代码
***共同提高***

TOP

回复 32楼 的帖子

处理了                                                                                                                   .

TOP

楼上是否有点考虑欠妥了,好像没有处理数值相同的情况!

[ 本帖最后由 batman 于 2009-4-14 19:56 编辑 ]
***共同提高***

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=*" %%a in (a.txt) do (
  3.   for %%i in (%%a) do set "var=00%%i" & echo !var:~-3!
  4. ))>a_tmp.txt
  5. for /f "tokens=* delims=0" %%a in ('sort a_tmp.txt') do (
  6.   set var=%%a
  7.   for %%i in (#!var:~-1!) do (
  8.     set "var=!%%i! "
  9.     if "!var: %%a =!"=="!var!" set %%i=!%%i! %%a
  10.   )
  11. )
  12. for /l %%a in (0 1 9) do if defined #%%a echo %%a!#%%a!
  13. del a_tmp.txt & pause
复制代码

TOP

回复 28楼 的帖子

写错了,效率挺好的,学习

TOP

17、18楼的代码都有问题,请nanhui兄弟仔细对照题目要求测试和检查,你24楼的写得太罗索,我就没仔细看了。

[ 本帖最后由 batman 于 2009-4-14 11:57 编辑 ]
***共同提高***

TOP

返回列表