标题: [文本处理] BAT脚本如何批量修改CSV内的文档内容? [打印本页]
作者: zhengwei007 时间: 2012-7-18 15:50 标题: BAT脚本如何批量修改CSV内的文档内容?
要求:通过批处理将文本文件中的所有
,TS修改为,S
,TE修改为,E
,TR修改为,R
,TP修改为,P
就是将第4列所有的T去掉,其它不变!!
朋友提供了一些代码,但是无法实现,请大侠们协助!- @echo off&setlocal enabledelayedexpansion
- for /f "delims=, tokens=1-4" %%i in ('dir /s/b *.csv') do (
- rem File Encoding Is CP936
- set "lastchar=%%l"
- set lastchar=!lastchar:T=!
- echo %%i,%%j,%%k,!lastchar!
- )
- pause
复制代码
我将文件上传,给大家测试一下,谢谢!
作者: 乱码 时间: 2012-7-18 16:04
path = "E:\文件"
Set fso = CreateObject("Scripting.FileSystemObject")
Set re = New RegExp
re.Global = True '是否返回所有匹配结果
re.MultiLine = True '是否多行模式
re.Pattern = "(\d+,)T"
For Each x In fso.GetFolder(path).Files '遍历指定文件夹里的所有文件
word = re.Replace(x.OpenAsTextStream.ReadAll,"$1") '替换
x.OpenAsTextStream(2).Write word '重新写入
Next
MsgBox "OK"
这个是VBS脚本,我不会bat
没有具体的测试数据,我简单测试了下,可以实现的、
如果不放心,你复制一份测试一下先、
作者: zhengwei007 时间: 2012-7-18 16:43
请问这些代码的运行环境在哪?是用宏还是要安装VB?
作者: zhengwei007 时间: 2012-7-18 16:43
请问这些代码的运行环境在哪?是用宏还是要安装VB?
作者: 乱码 时间: 2012-7-18 16:46
回复 3# zhengwei007
新建 文本文档 双击打开,把代码复制过去,保存为 “批量修改.VBS”
双击运行
显示OK 就好了
、
作者: zhengwei007 时间: 2012-7-18 17:06
的确可以,请问PATH后面想设置成当前路径,不管拷贝到哪都能直接运行,应该改成什么?我试过留空或..好像不行。
作者: 乱码 时间: 2012-7-18 17:09
回复 6# zhengwei007
. 表示当前目录、path = "."
作者: zhengwei007 时间: 2012-7-18 17:15
本帖最后由 zhengwei007 于 2012-7-18 17:18 编辑
可以了,谢谢朋友。原来还有VBS这东西,一直没用过!而且这修改速度简直秒杀,5万多文件,不到50秒搞定。
作者: zhengwei007 时间: 2012-7-18 17:18
请问你的代码如何实现只修改第4列的??
作者: 乱码 时间: 2012-7-18 17:22
回复 9# zhengwei007
"(\d+,)T" 正则表达式,匹配一类而不是一列
这个正则的意思是 只要是 数字,T 这样的数据都只取他的数字和,
比如 123,TB 只留下 123,B
作者: zhengwei007 时间: 2012-7-18 17:24
高手啊~能想到这来,真是经验之谈,学习了!
作者: CrLf 时间: 2012-7-19 02:55
需要第三方 sed:- for %%a in (*.csv) do sed -i "s/,[^],T\([SERP]\)$/,\1/g" "%%a"
复制代码
作者: Heric 时间: 2012-7-22 06:32
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b *.csv') do (
set name=%%i
for /f "tokens=1-4 delims=," %%a in (!name!) do (
set one=%%a
set two=%%b
set three=%%c
set lastchar=%%d
set lastchar=!lastchar:T=!
echo !one!,!two!,!three!,!lastchar!>>new!name!
)
)
echo Done !! and press any to exit
pause
作者: Heric 时间: 2012-7-22 09:07
- @echo off&setlocal enabledelayedexpansion
-
- for /f "delims=" %%i in ('dir /b *.csv') do (
- set name=%%i
- for /f "tokens=1-4 delims=," %%a in (!name!) do (
- set one=%%a
- set two=%%b
- set three=%%c
- set lastchar=%%d
- set lastchar=!lastchar:T=!
- echo !one!,!two!,!three!,!lastchar!>>new!name!
- )
- )
- echo Done !! and press any to exit
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |