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

没解决.part08.rar

16.79 KB

没解决.part01.rar

20 KB

没解决.part02.rar

20 KB

没解决.part03.rar

20 KB

没解决.part04.rar

20 KB

没解决.part05.rar

20 KB

没解决.part06.rar

20 KB

没解决.part07.rar

20 KB

发表于 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)
 楼主| 发表于 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-4-26 04:58

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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