[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样将CSV文件里的某几列/指定列删除并保存到其他目录?

问问各位,怎样才能将某目录下(如c:\1)的*.CSV(逗号分隔)类的EXCEL文件删除某几列(如图中的6,7),并保存到其他目录(如c:\2),谢谢

能帮帮忙吗,谢谢

TOP

如果每列数据中没有空格、Tab以及其他默认分隔符:
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Set "OldPath=C:\1"&Rem 要读取的目录
  3. Set "NewPath=C:\2"&Rem 要保存的目录
  4. Set "Number=6 7"&Rem 要删除的列集合
  5. For %%i In (%OldPath%\*.csv) Do (
  6.   (For /F "usebackq delims=" %%j In ("%%i") Do (
  7.     Set /A Count=0&Set "Str="
  8.     For %%k In (%%j) Do (
  9.       Set /A Count+=1&Set "Flag=A"
  10.       For %%l In (%Number%) Do If %%l EQU !Count! Set "Flag="
  11.       If Defined Flag Set "Str=!Str!,%%k"
  12.     )
  13.     Echo !Str:~1!
  14.    ))>"%NewPath%\%%~nxi"
  15. )   
复制代码
一路飘过的鸟~~~

TOP

谢谢ArdentMan ,忘了说是有空格的,那如果有空格等分隔符呢,该怎样,因为8,9那两列数据都有空格的,出来的效果变了,如图,再次谢谢!

TOP

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Set "OldPath=C:\1"&Rem 要读取的目录
  3. Set "NewPath=C:\2"&Rem 要保存的目录
  4. Set "Number=6 7"&Rem 要删除的列集合
  5. For %%i In (%OldPath%\*.csv) Do (
  6.   (For /F "usebackq delims=" %%j In ("%%i") Do (
  7.     Set /A Count=0&Set "Str="
  8.     Set "Var=%%j"&Set "Var=!Var: =@@@@@@!"
  9.     For %%k In (!Var!) Do (
  10.       Set /A Count+=1&Set "Flag=A"
  11.       For %%l In (%Number%) Do If %%l EQU !Count! Set "Flag="
  12.       If Defined Flag Set "Str=!Str!,%%k"
  13.     )
  14.     Set "Str=!Str:@@@@@@= !"&Echo !Str:~1!
  15.    ))>"%NewPath%\%%~nxi"
  16. )
复制代码
一路飘过的鸟~~~

TOP

谢谢,想问问“要读取的目录”和“要保存的目录”可各修改成其他的目录吗,我尝试改成其他目录的,一运行批处理文件屏幕就一闪而过了,没处理,而不改维持原来的“c:\1和c:\2",这样就正常,谢谢ArdentMan

TOP

自己再顶一下,求助

TOP

谢谢,想问问“要读取的目录”和“要保存的目录”可各修改成其他的目录吗,我尝试改成其他目录的,一运行批 ...
rickyho 发表于 2011-8-24 23:05



    再恳请下各位帮帮忙,谢谢!

TOP

返回列表