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

[文本处理] [已解决]批处理BAT如何判断关键词所在列并删除所在行?

如附件,如何实现只判断“工作日期”这一列?目前判断是整一行中是否含有date.txt中的关键词
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 battab 于 2014-2-18 11:20 编辑

回复 1# lijiehao

试试这个可以吗?
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=0
  3. for /f "tokens=1-3" %%a in (bw.txt) do (
  4. set/a n+=1
  5. if "!n!"=="1" echo %%a %%b %%c
  6. for /f "tokens=*" %%i in (date.txt) do (
  7. if %%i==%%a echo %%a %%b %%c
  8. )
  9. )
  10. pause>nul
复制代码
这个筛选出有关键词的行
1

评分人数

学习中

TOP

本帖最后由 battab 于 2014-2-18 12:52 编辑

回复 1# lijiehao


    这个应该可以满足要求:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1-3" %%a in (bw.txt) do (
  3. for /f "tokens=*" %%i in (date.txt) do (
  4. if %%i neq %%a echo %%a %%b %%c >>bw_new.txt
  5. )
  6. )
  7. pause>nul
复制代码
学习中

TOP

回复 3# battab


    非常感谢,目前测试确实可以了

TOP

回复 3# battab


没有必要在二层for循环里面重复的读取date.txt
一次就够了
  1. @echo off
  2. set /p str=<date.txt
  3. (for /f "tokens=1-3" %%a in (bw.txt) do (
  4.     if %str% neq %%a echo %%a %%b %%c
  5. ))>bw_new.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. gawk "NR==FNR{str=$0}NR>FNR{if($1!=str)print}" date.txt bw.txt > bw_new.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher


    如果date里不止一行的话,这个还行吗?

TOP

回复 7# zhanglei1371


    set /p 只能获取第一行

TOP

本帖最后由 lijiehao 于 2014-2-18 17:05 编辑

回复 5# Batcher


    谢谢大神多次的帮助!现在date里面只有一个日期,如果有多个日期存在呢?如

20140218
2014.02.18
20140219
2014.02.19
......
20140225
2014.02.25

此外,为什么只能支持前面3列,如果后面还有几列呢?

惭愧,水平太差,只是为了提高工作效率,不停搜索,不停修改人家的代码

TOP

回复 9# lijiehao


    2楼和3楼的代码都不行是吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# Batcher


    只支持前三列,第4列以后的全都没办法输出

TOP

回复 11# lijiehao


    把代码里面的 1-3 改成 1-2*
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 12# Batcher


    非常感谢!

TOP

回复 13# lijiehao


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表