找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31917|回复: 10

[文件操作] 【已解决】批处理如何删除多个文本里指定列/字段的内容为指定字符串的行

[复制链接]
发表于 2016-11-9 19:51:02 | 显示全部楼层 |阅读模式
批量删除txt文件里第二列为0的行数据!!
有很多个文件 一个文件里面有很多txt

格式基本一样
请问想要筛选分离出 删除每个txt文件里面第二例为0的行

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2016-11-9 20:26:03 | 显示全部楼层
本帖最后由 pcl_test 于 2016-11-10 10:27 编辑

for/findstr
http://www.bathome.net/thread-2189-1-1.html
http://bbs.bathome.net/thread-31727-1-1.html
http://www.bathome.net/thread-5814-1-1.html
http://www.bathome.net/viewthread.php?tid=14682
http://www.bathome.net/thread-75-1-1.html
  1. rem win7及以上系统运行
  2. 2>nul md "result"
  3. powershell -c "dir *.txt|%%{gc $_|?{($_.trim() -split '\s+')[1] -ne 0}|out-file $('result\'+$_.Name) -encoding default}"
  4. rem powershell -c "dir *.txt|%%{gc $_|?{$_ -notmatch '^\s*?\S+?\s+?0[^0]*?'}|out-file $('result\'+$_.Name) -encoding default}"
  5. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
shero + 1 完美

查看全部评分

发表于 2016-11-9 21:14:35 | 显示全部楼层
本帖最后由 0000 于 2016-11-9 21:15 编辑

  1. rem 请把__tab__换成实际的tab字符
  2. set tab=__tab__
  3. for %%a in (*.txt) do (
  4. for /f "tokens=1,2,* delims=%tab%" %%x in (%%a) do (
  5. if not "%%y" == "0" echo %%x%tab%%%y%tab%%%z>>%%~na_1.txt
  6. )
  7. )
复制代码
如有错误请指正。
 楼主| 发表于 2016-11-11 15:32:04 | 显示全部楼层
回复 2# pcl_test


    根据你的代码,我成功完成操作,万分感谢!现在还有一个问题,如果我是想保留第二列是0的行的数据该如何操作呢,请大神指教!
发表于 2016-11-11 17:26:10 | 显示全部楼层
回复 3# 0000


咱们论坛可以支持 tab 字符,你试试
  1. set tab=       
  2. for %%a in (*.txt) do (
  3.     for /f "tokens=1,2,* delims=%tab%" %%x in (%%a) do (
  4.         if not "%%y" == "0" echo %%x%tab%%%y%tab%%%z>>%%~na_1.txt
  5.     )
  6. )
复制代码
发表于 2016-11-11 18:32:39 | 显示全部楼层
本帖最后由 pcl_test 于 2018-4-19 11:48 编辑

回复 4# shero

1、powershell
-eq
-match
2、
  1. @echo off
  2. for /f "tokens=*" %%a in ('type "文本.txt"') do (
  3.     for /f "tokens=1,2" %%b in ("%%a") do (
  4.         if "%%c" equ "0" echo;%%a
  5.     )
  6. )
  7. pause
复制代码
3、
  1. findstr /rc:"^[         ]*[^         ][^         ]*[         ][         ]*0[^0]*" "文本.txt"
  2. pause
复制代码
4、
  1. #*第三方http://www.bathome.net/s/tool/index.html?key=gawk
  2. #*&cls&2>nul md "result" &dir /a-d/b *.txt|gawk -f "%~f0"&pause&exit
  3. BEGIN{
  4.    while(getline file>0){
  5.       while(getline<file>0){
  6.           if($2==0)print $0>"result\"file
  7.       }
  8.    }
  9. }
复制代码
 楼主| 发表于 2016-11-13 08:12:54 | 显示全部楼层
回复 6# pcl_test


    版主大大,我没有明白你的意思,是这几个分别运行还是合在一起,我都试过了还是有问题,原谅我是一个初学者,请大大指导
 楼主| 发表于 2016-11-16 15:19:21 | 显示全部楼层
回复 6# pcl_test


   版主大大 只有第一个程序 把“文本.txt”改为对应的文本可以用,但是只能一个一个文本改吗?不能直接批处理文件夹类的所有txt文件吗?
发表于 2016-11-16 15:50:25 | 显示全部楼层
回复 8# shero

先把2楼发的教程学习学习吧
 楼主| 发表于 2016-11-17 21:58:39 | 显示全部楼层
回复 9# pcl_test


    版主 版主 我根据您之前的程序修改了一下 似乎改出来了 好开心&#10084;
rem win7及以上系统运行
2>nul md "result\"
powershell -c "dir *.txt|%%{gc $_|?{($_.trim() -split '\s+')[1] -eq 0}|out-file $('result\'+$_.Name) -encoding default}"
rem powershell -c "dir *.txt|%%{gc $_|?{$_ -notmatch '^\s*?\S+?\s+?0[^0]*?'}|out-file $('result\'+$_.Name) -encoding default}"
pause
发表于 2016-11-17 22:17:51 | 显示全部楼层
回复 10# shero

这是两段代码,改其一皆可,rem表示注释
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 09:14 , Processed in 0.022817 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表