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

[文本处理] 【已解决】批处理怎样把相连数字用~连接?

[复制链接]
发表于 2014-8-5 20:45:07 | 显示全部楼层 |阅读模式
本帖最后由 zhanglei1371 于 2014-8-7 09:35 编辑

如何用代码实现 将连续数字的“头”和“尾”用~相连
13, 14, 15, 19
2,3,4,6,7,8,9
.....
变为:
13~15,19
2~4,6~9

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-8-6 16:06:34 | 显示全部楼层

  1. @echo off
  2. (for /f "delims=" %%a in (a.txt) do (
  3.     set str=%%a
  4.     setlocal enabledelayedexpansion
  5.     set str=!str:,= !
  6.     set str=!str:,= !
  7.     for %%b in (!str!) do (
  8.         if not defined out (
  9.                 set /a a=b=out=%%b
  10.         ) else (
  11.             if !a! equ %%b (
  12.                     set "out=!b!~%%b"
  13.             ) else (
  14.                 set "out=!out!,%%b"
  15.                 set "b=!out!"
  16.                 set a=%%b
  17.             )
  18.         )
  19.         set /a a+=1
  20.     )
  21.     echo,!out!
  22.     endlocal
  23. ))>b.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
zhanglei1371 + 1 乐于助人

查看全部评分

发表于 2014-8-6 17:14:47 | 显示全部楼层
本帖最后由 CrLf 于 2014-8-7 17:43 编辑

简单暴力解,疯狂地 set:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (0 1 98) do set /a $%%a=%%a+1

  3. for /f "delims=" %%a in (a.txt) do (
  4.    set "str=,%%a,"
  5.    set "str=!str:,=,!"
  6.    set "str=!str: =!"
  7.    for %%b in (!str!) do for %%c in (!$%%b!) do (
  8.       set "str=!str:~%%b,%%c,=~%%c,!"
  9.       set "str=!str:,%%b,%%c~=,%%b~!"
  10.       set "str=!str:,%%b,%%c,=,%%b~%%c,!"
  11.    )
  12.    echo !str:~1,-1!
  13. )
  14. pause
复制代码

评分

参与人数 2技术 +2 收起 理由
wankoilz + 1 很巧妙,忍不住加分!
zhanglei1371 + 1 感谢帮助!

查看全部评分

发表于 2014-8-6 17:15:55 | 显示全部楼层
回复 2# xxpinqz


    目测可以省掉 set str=!str:,= !,因为 , = ; 空格 tab 都是分隔符
发表于 2014-8-7 16:56:56 | 显示全部楼层
回复 4# CrLf
多谢指点。

这set的炉火纯青啊。佩服!不过set的的缺陷最怕碰到2,3,4,1,2,3,4
发表于 2014-8-7 17:45:12 | 显示全部楼层
回复 5# xxpinqz


    先前未考虑乱序的情况,不过再加一个 set "str=!str:,%%b,%%c~=,%%b~!" 就好了,已修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 07:53 , Processed in 0.032958 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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