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

[文本处理] [已解决]BAT如何实现文本分类并且合并?

[复制链接]
发表于 2012-11-28 20:59:52 | 显示全部楼层 |阅读模式
本帖最后由 lateol 于 2012-12-1 20:23 编辑

非常感谢各位大神的帮助,我的批处理已经成功一段落。
特别感谢 版主tmplinshi  apang tmplinshi 。还有很多。因你们而成功。

现在小弟还有,两个特别难题,如上题。
第一。
假如我有以下文本:
1111A.TXT 1111B.TXT 1111C.TXT  1111D.TXT
2222A.TXT 2222B.TXT 2222C.TXT 2222D.TXT
3333A.TXT  3333B.TXT  3333C.TXT 3333D.TXT

每个内容里都有如下内容:
(Cutter Name: D12)
(Cutter Name: D4)
(Cutter Name: D8)
(Cutter Name: R0.5)
等不定内容。
批处理如何早到同样如这样的字符串并进行分类。
如文本包含(Cutter Name: D12) 则新建D12文件夹 并移动入内。
包含(Cutter Name: D4)则新建D4文件夹 并移动入内。以此类推。
=================================================
第二:
在新建好的没个文件夹。吧里边的txt按系统顺序进行文本合并?

评分

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

查看全部评分

发表于 2012-11-28 23:07:41 | 显示全部楼层
不知道是不是这个意思,试一下看
一:
  1. @echo off
  2. for %%a in (D4 D12 D8 R0.5) do (
  3.   for /f "delims=:" %%b in ('findstr /ic:"Cutter Name: %%a" *.txt') do (
  4.     md "%%a" 2>nul
  5.     move "%%b" "%%a"
  6.   )
  7. )
  8. pause
复制代码
二:
  1. @echo off
  2. for %%a in (D4 D12 D8 R0.5) do (
  3.   pushd "%%a"
  4.   copy /b *.txt New.txt
  5.   popd
  6. )
  7. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
lateol + 1 强!不解释(批处理大神)

查看全部评分

 楼主| 发表于 2012-11-29 00:44:17 | 显示全部楼层
回复 2# apang


    强!对! 要的就是这个效果。
对了合并文本的代码可以纠正一下生成出来的文件名吗  如D12的文件夹就 名为D12.TXT.
还有一个情况。就再劳教一个问题:
如要捕捉的字符有些分散。有办法解决么?
如有些内容如下:
(Diameter:D4  Fillet:R0.5) 与 (Cutter Name: D4R0.5) 是一样的。
发表于 2012-11-29 16:04:02 | 显示全部楼层
回复 3# lateol

第4行 copy /b *.txt New.txt 改成 copy /b *.txt %%a.txt

如要捕捉的字符有些分散。有办法解决么?
如有些内容如下:
(Diameter:D4  Fillet:R0.5) 与 (Cutter Name: D4R0.5) 是一样的。

没弄明白,既有D4又有R0.5,那么你想把它放到哪个文件夹下?
 楼主| 发表于 2012-11-29 18:05:13 | 显示全部楼层
本帖最后由 lateol 于 2012-11-29 20:27 编辑

回复 4# apang

这也是一个:D4R0.5
我现在把你的代码改成
  1. @echo off
  2. for %%a in (D12R6 D12 D10R5 D10R0.5 D10 D8R4 D8R0.5 D6R3 D6R0.5 D6 D4R2 D4R0.5 D4R0.2 R1.5 D4 D3 D2 D1 R6 R5 R4 R3 R2 R1 R0.5 R0.2 ) do (
  3.   for /f "delims=:" %%b in ('findstr /ic:"Cutter Name: %%a" *.nc') do (
  4.     md "%%a" 2>nul
  5.     move "%%b" "%%a"
  6.   )
  7. )
  8. pause
复制代码
完美处理。
只是碰到如D10R0.5的,有些文本不是这样的格式(Cutter Name: D10R0.5)
而是(Diameter:D10  Fillet:R0.5)但道理他也是和(Cutter Name: D10R0.5)是一样的。要放在D10R0.5文件夹里一起合并。
 楼主| 发表于 2012-11-29 20:35:57 | 显示全部楼层
回复 4# apang


    关键是 如像D10R0.5 被(Diameter:D10  Fillet:R0.5) 给隔开了 不知道怎么样,截取它作为D10R0.5.
发表于 2012-11-29 22:07:06 | 显示全部楼层
  1. @echo off
  2. for %%a in (D12R6 D12 D10R5 D10R0.5 D10 D8R4 D8R0.5 D6R3 D6R0.5 D6 D4R2 D4R0.5 D4R0.2 R1.5 D4 D3 D2 D1 R6 R5 R4 R3 R2 R1 R0.5 R0.2) do (
  3.   for /f "tokens=1,2 delims=DR" %%b in ("%%a") do (
  4.     if "%%c"=="" (set Re=) else set Re=/ic:"Diameter: D%%b  Fillet: R%%c"
  5.   )
  6.   setlocal enabledelayedexpansion
  7.   for /f "delims=:" %%b in ('findstr /ic:"Cutter Name: %%a" !Re! *.nc') do (
  8.     md "%%a" 2>nul
  9.     move "%%b" "%%a"
  10.   )
  11.   endlocal
  12. )
  13. pause
复制代码
试一下。
不知道"Diameter:D10  Fillet:R0.5"中的冒号是全角还是半角符号

评分

参与人数 1技术 +1 收起 理由
lateol + 1 太神了。技术称号(为所欲为)。

查看全部评分

 楼主| 发表于 2012-11-30 20:14:54 | 显示全部楼层
回复 7# apang


    OK 解决了 灰常谢谢、
 楼主| 发表于 2012-11-30 21:06:24 | 显示全部楼层
回复 7# apang

对了 请问红色部分是什么意思?
for /f "tokens=1,2 delims=DR" %%b in ("%%a") do (

    if "%%c"=="" (set Re=) else set Re=/ic:"Diameter: D%%b  Fillet: R%%c"

  )
发表于 2012-12-1 20:40:52 | 显示全部楼层
回复 9# lateol


delims=DR
以字母D或R作为列分隔符
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 20:17 , Processed in 0.020247 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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