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

【练习-042】批处理将文本数值按尾数分类

[复制链接]
发表于 2009-11-7 14:43:42 | 显示全部楼层
我贴个代码吧
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (a.txt) do (
  3. for %%b in (%%a) do (
  4. set/a num=%%b%%10
  5. for %%c in (!num!) do set #%%c=!#%%c! %%b
  6. )
  7. )
  8. for /f "tokens=2 delims==" %%a in ('set #') do echo %%a
  9. pause>nul
复制代码

评分

参与人数 1PB +8 收起 理由
batman + 8 还可提高点效率

查看全部评分

发表于 2009-11-7 19:03:33 | 显示全部楼层
不用set /a也可以做到,用  :~-1
发表于 2009-11-7 19:06:15 | 显示全部楼层

回复 5楼 的帖子

可是 batman 要求是尽量不用 set  截取字符啊-----
发表于 2009-11-7 21:29:36 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3. for %%j in (%%i) do (set /a num=%%j%%10
  4. for %%k in  (!num!) do set #%%k=!#%%k! %%j))
  5. for /f "tokens=1,2 delims=#=" %%h in ('set #') do echo %%h %%i
  6. pause
复制代码

新学习的方法----------

[ 本帖最后由 vsbat 于 2009-11-7 21:42 编辑 ]
 楼主| 发表于 2009-11-7 23:16:32 | 显示全部楼层
晕,是我大意了,没想到这题已经出过了(见练习-42),特向大家道歉,并将此贴关闭!
发表于 2009-11-8 00:37:21 | 显示全部楼层
重温一下 前面发过没?前面随风兄提示直接for的  后面冒泡排
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.    for %%j in (%%i) do (
  4.        set "str=%%j"
  5.        for %%k in (!str:~-1!) do set/a _%%k+=1&set "_%%k_!_%%k!=%%j"
  6.     )
  7. )
  8. for /l %%a in (0,1,9) do if defined _%%a (
  9.    set /a "c=_%%a-1"
  10.        for /l %%i in (1,1,!c!) do (
  11.            set /a "b=%%i+1"
  12.            for /l %%j in (!b!,1,!_%%a!) do (
  13.            if !_%%a_%%i! gtr !_%%a_%%j! set/a "_%%a_%%j=!_%%a_%%i!,_%%a_%%i=!_%%a_%%j!"
  14.         )
  15.     )
  16.     for /l %%i in (1,1,!_%%a!) do set "var=!var! !_%%a_%%i!"
  17.     echo;%%a!var!&set "var="
  18. )
  19. pause
复制代码
发表于 2009-11-8 13:57:53 | 显示全部楼层
我也来个..
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (in.txt) do for %%b in (%%a) do set b=000%%b&set/a_!b:~-1!_!b:~-3!+=1
  3. for /l %%a in (0,1,9) do (for /f "tokens=1,2,3 delims=_=" %%i in ('set _%%a 2^>nul') do (if not defined _%%a set/p=%%a<nul&set _%%a=1)&set/ai=1%%j-1000&&for /l %%b in (1,1,%%k) do set/p= !i!<nul)&if defined _%%a echo.
  4. pause
复制代码
发表于 2009-11-8 14:00:29 | 显示全部楼层
郁闷,突然发现batman已经有差不多的代码了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:31 , Processed in 0.016754 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表