标题: [文本处理] [已解决]BAT如何实现文本分类并且合并? [打印本页]
作者: lateol 时间: 2012-11-28 20:59 标题: [已解决]BAT如何实现文本分类并且合并?
本帖最后由 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按系统顺序进行文本合并?
作者: apang 时间: 2012-11-28 23:07
不知道是不是这个意思,试一下看
一:- @echo off
- for %%a in (D4 D12 D8 R0.5) do (
- for /f "delims=:" %%b in ('findstr /ic:"Cutter Name: %%a" *.txt') do (
- md "%%a" 2>nul
- move "%%b" "%%a\"
- )
- )
- pause
复制代码
二:- @echo off
- for %%a in (D4 D12 D8 R0.5) do (
- pushd "%%a\"
- copy /b *.txt New.txt
- popd
- )
- pause
复制代码
作者: lateol 时间: 2012-11-29 00:44
回复 2# apang
强!对! 要的就是这个效果。
对了合并文本的代码可以纠正一下生成出来的文件名吗 如D12的文件夹就 名为D12.TXT.
还有一个情况。就再劳教一个问题:
如要捕捉的字符有些分散。有办法解决么?
如有些内容如下:
(Diameter:D4 Fillet:R0.5) 与 (Cutter Name: D4R0.5) 是一样的。
作者: apang 时间: 2012-11-29 16:04
回复 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,那么你想把它放到哪个文件夹下?
作者: lateol 时间: 2012-11-29 18:05
本帖最后由 lateol 于 2012-11-29 20:27 编辑
回复 4# apang
这也是一个:D4R0.5
我现在把你的代码改成- @echo off
- 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 (
- for /f "delims=:" %%b in ('findstr /ic:"Cutter Name: %%a" *.nc') do (
- md "%%a" 2>nul
- move "%%b" "%%a\"
- )
- )
- pause
复制代码
完美处理。
只是碰到如D10R0.5的,有些文本不是这样的格式(Cutter Name: D10R0.5)
而是(Diameter:D10 Fillet:R0.5)但道理他也是和(Cutter Name: D10R0.5)是一样的。要放在D10R0.5文件夹里一起合并。
作者: lateol 时间: 2012-11-29 20:35
回复 4# apang
关键是 如像D10R0.5 被(Diameter:D10 Fillet:R0.5) 给隔开了 不知道怎么样,截取它作为D10R0.5.
作者: apang 时间: 2012-11-29 22:07
- @echo off
- 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 (
- 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"
- )
- setlocal enabledelayedexpansion
- for /f "delims=:" %%b in ('findstr /ic:"Cutter Name: %%a" !Re! *.nc') do (
- md "%%a" 2>nul
- move "%%b" "%%a\"
- )
- endlocal
- )
- pause
复制代码
试一下。
不知道"Diameter:D10 Fillet:R0.5"中的冒号是全角还是半角符号
作者: lateol 时间: 2012-11-30 20:14
回复 7# apang
OK 解决了 灰常谢谢、
作者: lateol 时间: 2012-11-30 21:06
回复 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"
)
作者: BAT-VBS 时间: 2012-12-1 20:40
回复 9# lateol
delims=DR
以字母D或R作为列分隔符
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |