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

[文本处理] 批处理怎样替换文本序号?

[复制链接]
发表于 2014-7-21 17:37:23 | 显示全部楼层 |阅读模式
本帖最后由 1e3e 于 2014-7-25 18:08 编辑

如附件excel表,我想excel可能做不了,所以发到批处理来,
A列:
一、第一部分
(一)床上用品
1、被子枕头
2、其它
(二)沙发
1、购买皮质沙发
3、其它
(三)桌椅
1、大桌子
5、其他
(四)煤气
1、买气费
2、维修费
二、第二部分
(一)教育投入
1、接送小孩的交通费
2、学杂费
3、购买文具
6、请家教
7、教育的其它支出
(二)医疗卫生
1、卫生投入
4、医保等支出
5、其他
三、第三部分
(三)社交费用
1、梳妆费
4、其他

J列:
1
1.1
1.1.1
1.1.2
1.2
1.2.1
1.2.3
1.3
1.3.1
1.3.5
1.4
1.4.1
1.4.2
2
2.1
2.1.1
2.1.2
2.1.3
2.1.6
2.1.7
2.2
2.2.1
2.2.4
2.2.5
3
3.1
3.1.1
3.1.4

如何用批处理做到?

应该怪我没说明白,请大大们再看下我新上传的附件,
要求:即A列从第10格开始变为r列第10格模样,
1、里面具体项目名称“某某项目”按其出现顺序变为“某某项目1","某某项目2"等,
2、a列我已经统一转为半角格式
3、对于a33为空值的,要变为r33"空白值"


4、

问题.rar

2.93 KB, 下载次数: 8

没解决.part08.rar

16.79 KB, 下载次数: 1

没解决.part01.rar

20 KB, 下载次数: 1

没解决.part02.rar

20 KB, 下载次数: 2

没解决.part03.rar

20 KB, 下载次数: 1

没解决.part04.rar

20 KB, 下载次数: 1

没解决.part05.rar

20 KB, 下载次数: 1

没解决.part06.rar

20 KB, 下载次数: 1

没解决.part07.rar

20 KB, 下载次数: 1

发表于 2014-7-21 18:08:00 | 显示全部楼层
本帖最后由 CrLf 于 2014-7-24 18:42 编辑

暴力思路:
  1. @echo off&setlocal enabledelayedexpansion
  2. rem 基本思路是将所有数字理解为 a b c 三部分,然后...

  3. set "list=@一二三四五六七八九"

  4. for /l %%a in (1 1 9) do (
  5.         set [!list:~%%a,1!]=set /a a=%%a,b=c=0
  6.            rem 将 [一] ~ [九] 设为变量,引用其值会将 a 设为对应数字,b 和 c 置 0
  7.         set [(!list:~%%a,1!]=set /a b=%%a,c=0
  8.            rem 将 [(一] ~ [(九] 设为变量,引用其值会将 b 设为对应数字,c 置 0
  9.         set [%%a]=set c=%%a
  10.            rem 将 [1] ~ [9] 设为变量,引用其值会将 c 设为对应数字
  11. )

  12. for /f "delims=)、" %%a in (a.txt) do (
  13.            rem 以 ) 、 分割字符串,获取行首数字
  14.         for %%b in ("![%%a]!") do %%~b
  15.            rem 在变量中引用相应变量,执行其值,效果见上文描述
  16.         set str=!a!.!b!.!c!
  17.            rem 连接 a b c 变量
  18.         echo !str:.0=!
  19.            rem 显示不为 0 的部分
  20. )
  21. pause
复制代码

评分

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

查看全部评分

发表于 2014-7-22 10:43:54 | 显示全部楼层
Excel的精髓是公式函数,Lz对公式的了解太少了。一个公式解决:
=SUBSTITUTE(A6,LEFT(A6,IF(ISERROR(SEARCH("、",A6)),SEARCH(")",A6),SEARCH("、",A6))),J6 & " ")
K列便是生成的数据:
问题K.rar (3.76 KB, 下载次数: 5)
 楼主| 发表于 2014-7-24 17:22:16 | 显示全部楼层
Excel的精髓是公式函数,Lz对公式的了解太少了。一个公式解决:
=SUBSTITUTE(A6,LEFT(A6,IF(ISERROR(SEARC ...
zhanglei1371 发表于 2014-7-22 10:43

或许我没说明白,j列是要达到的效果,
也就是说只能凭a列达到j列效果
 楼主| 发表于 2014-7-24 17:24:53 | 显示全部楼层
Excel的精髓是公式函数,Lz对公式的了解太少了。一个公式解决:
=SUBSTITUTE(A6,LEFT(A6,IF(ISERROR(SEARC ...
zhanglei1371 发表于 2014-7-22 10:43



    你只能由A列达到J列的效果,如果能用EXCEL做到是最好的
 楼主| 发表于 2014-7-24 18:21:43 | 显示全部楼层
暴力思路:
CrLf 发表于 2014-7-21 18:08

很暴力很强大,能否详细注释一下,我还有其它类似格式以便修改
发表于 2014-7-24 18:42:49 | 显示全部楼层
回复 6# 1e3e


    已注释,应该很详细了,有基础就能看明白
 楼主| 发表于 2014-7-25 18:08:55 | 显示全部楼层
回复 2# CrLf


    请大大再看下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 12:14 , Processed in 0.032481 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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