标题: [文本处理] 批处理怎样将CSV文件里的某几列/指定列删除并保存到其他目录? [打印本页]
作者: rickyho 时间: 2011-8-23 00:29 标题: 批处理怎样将CSV文件里的某几列/指定列删除并保存到其他目录?
问问各位,怎样才能将某目录下(如c:\1)的*.CSV(逗号分隔)类的EXCEL文件删除某几列(如图中的6,7),并保存到其他目录(如c:\2),谢谢
作者: rickyho 时间: 2011-8-23 08:59
能帮帮忙吗,谢谢
作者: ArdentMan 时间: 2011-8-23 20:10
如果每列数据中没有空格、Tab以及其他默认分隔符:- @Echo Off&SetLocal EnableDelayedExpansion
- Set "OldPath=C:\1"&Rem 要读取的目录
- Set "NewPath=C:\2"&Rem 要保存的目录
- Set "Number=6 7"&Rem 要删除的列集合
- For %%i In (%OldPath%\*.csv) Do (
- (For /F "usebackq delims=" %%j In ("%%i") Do (
- Set /A Count=0&Set "Str="
- For %%k In (%%j) Do (
- Set /A Count+=1&Set "Flag=A"
- For %%l In (%Number%) Do If %%l EQU !Count! Set "Flag="
- If Defined Flag Set "Str=!Str!,%%k"
- )
- Echo !Str:~1!
- ))>"%NewPath%\%%~nxi"
- )
复制代码
作者: rickyho 时间: 2011-8-23 22:12
谢谢ArdentMan ,忘了说是有空格的,那如果有空格等分隔符呢,该怎样,因为8,9那两列数据都有空格的,出来的效果变了,如图,再次谢谢!
作者: ArdentMan 时间: 2011-8-24 11:33
- @Echo Off&SetLocal EnableDelayedExpansion
- Set "OldPath=C:\1"&Rem 要读取的目录
- Set "NewPath=C:\2"&Rem 要保存的目录
- Set "Number=6 7"&Rem 要删除的列集合
- For %%i In (%OldPath%\*.csv) Do (
- (For /F "usebackq delims=" %%j In ("%%i") Do (
- Set /A Count=0&Set "Str="
- Set "Var=%%j"&Set "Var=!Var: =@@@@@@!"
- For %%k In (!Var!) Do (
- Set /A Count+=1&Set "Flag=A"
- For %%l In (%Number%) Do If %%l EQU !Count! Set "Flag="
- If Defined Flag Set "Str=!Str!,%%k"
- )
- Set "Str=!Str:@@@@@@= !"&Echo !Str:~1!
- ))>"%NewPath%\%%~nxi"
- )
复制代码
作者: rickyho 时间: 2011-8-24 23:05
谢谢,想问问“要读取的目录”和“要保存的目录”可各修改成其他的目录吗,我尝试改成其他目录的,一运行批处理文件屏幕就一闪而过了,没处理,而不改维持原来的“c:\1和c:\2",这样就正常,谢谢ArdentMan
作者: rickyho 时间: 2011-8-25 21:11
自己再顶一下,求助
作者: rickyho 时间: 2011-8-26 17:39
谢谢,想问问“要读取的目录”和“要保存的目录”可各修改成其他的目录吗,我尝试改成其他目录的,一运行批 ...
rickyho 发表于 2011-8-24 23:05
再恳请下各位帮帮忙,谢谢!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |