Board logo

标题: [文本处理] 批处理如何删除多个txt文本的指定列? [打印本页]

作者: nihaoareyou    时间: 2015-1-11 13:00     标题: 批处理如何删除多个txt文本的指定列?

本帖最后由 pcl_test 于 2016-11-4 17:00 编辑

上千个txt文件,如何批量删除特定列的内容。
作者: mms0536    时间: 2015-1-11 13:42

....好几个问题咋都差不多...
你最好发个txt上来
作者: nihaoareyou    时间: 2015-1-11 13:54

回复 2# mms0536


    比如:处理前:  a  d    er
                           d  t    fl
                           k  j    gr
处理后(删除第一列):
                            d    er
                             t    fl
                             j    gr
作者: mms0536    时间: 2015-1-11 14:02

回复 3# nihaoareyou
  1. for /f "tokens=2,3 delims= " %%a in (xxx.txt) do (
  2. echo %%a %%b >xxx_del.txt
  3. )
复制代码

作者: nihaoareyou    时间: 2015-1-11 15:27

回复 4# mms0536


    这个运行之后文本没变化啊。
作者: mms0536    时间: 2015-1-11 15:35

回复 5# nihaoareyou


    xxx_del.txt
里面是处理后的
作者: nihaoareyou    时间: 2015-1-11 15:48

回复 6# mms0536


    文件太多,能直接在原文本上删除吗?
作者: mms0536    时间: 2015-1-11 16:32

本帖最后由 mms0536 于 2015-1-11 16:41 编辑

回复 7# nihaoareyou


    不建议不保留备份...
这个把改好的txt放在了当前目录的del_dir里面
  1. @echo off
  2. mkdir del_dir
  3. for /r "txt所在目录" %%i in (*.txt) do (
  4. for /f "tokens=2,3 delims= " %%a in (%%i) do (
  5. call :del_str %%a %%b %%i
  6. )
  7. )
  8. echo 已完成
  9. exit
  10. :del_dir
  11. echo %1 %2 >.\del_dir\%~n3.txt
  12. goto :eof
复制代码

作者: nihaoareyou    时间: 2015-1-11 16:54

回复 8# mms0536


    运行后无结果,del_dir文件夹是空的。
作者: DAIC    时间: 2015-1-11 17:35

回复 3# nihaoareyou
  1. sed -i "s/[^ ]\+ //" *.txt
复制代码

作者: mms0536    时间: 2015-1-11 17:40

回复 9# nihaoareyou

晕,搞错了...
  1. @echo off &echo test
  2. echo mkdir del_dir
  3. for /r "C:\Users\MMS\Desktop\" %%i in (*.txt) do (
  4. for /f "usebackq tokens=2,3 delims= " %%a in ("%%i") do (
  5. call :del_str %%a %%b %%i
  6. )
  7. )
  8. echo 已完成
  9. exit
  10. :del_str
  11. echo %1 %2 >.\del_dir\%~n3.txt
  12. goto :eof
复制代码

作者: DAIC    时间: 2015-1-11 17:58

回复 11# mms0536


    一般来说,call 命令会降低代码效率,直接把那个 echo 命令放到 for 循环内部就行了吧。
作者: mms0536    时间: 2015-1-11 18:15

回复 12# DAIC


    额,我只是想获取文件原名...
作者: DAIC    时间: 2015-1-11 19:56

回复 13# mms0536


不知道你说的获取文件原名和call有什么关系,直接在for循环内部echo不是也行嘛:
  1. echo %%a %%b >>.\del_dir\%%i
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2