Board logo

标题: [文本处理] 批处理如何删除txt中与文件名相同的内容? [打印本页]

作者: xxm19810711    时间: 2014-12-3 13:20     标题: 批处理如何删除txt中与文件名相同的内容?

如txt文件名为: 济南妇科医院.txt,如何把内容中所有的 济南妇科医院 删除?
作者: xxm19810711    时间: 2014-12-3 13:21

sed 可以吗?
作者: xxm19810711    时间: 2014-12-3 13:30

求大侠告知 不胜感激
作者: amwfjhh    时间: 2014-12-3 13:36

sed肯定可以,待SED熟手来上代码,不过这个问题纯批处理也是可以办到的。
  1. @echo off
  2. (for /f "tokens=*" %%i in (济南妇科医院.txt) do (
  3.   set strLine=%%i
  4.   setlocal enabledelayedexpansion
  5.   echo !strLine:济南妇科医院=!
  6.   endlocal
  7. ))>济南妇科医院_new.txt
  8. start "" 济南妇科医院_new.txt
复制代码

作者: DAIC    时间: 2014-12-3 13:56

  1. sed -i "s/济南妇科医院//g" 济南妇科医院.txt
复制代码

作者: xxm19810711    时间: 2014-12-3 14:09

回复 5# DAIC


    感谢回复,但是我只是举例,其实好多个txt文件,怎么能一次性处理呢?就是怎么引用文件名呢?
作者: xxm19810711    时间: 2014-12-3 14:10

回复 4# amwfjhh


    只是拿一个文件举例,实际有很多txt文件
作者: xxm19810711    时间: 2014-12-3 14:25

哪位大侠能给解答一下?急等呀 谢谢了
作者: DAIC    时间: 2014-12-3 15:39

回复 6# xxm19810711
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b *.txt') do (
  3.     sed -i "s/%%i//g" "%%i"
  4. )
复制代码

作者: xxm19810711    时间: 2014-12-3 15:46

回复 9# DAIC


    非常感谢回复,但是调用的文件名是 文件名.txt 的,也就是说txt中只有内容里是 文件名.txt才会删除。 如何把没有txt的内容删除呢?谢谢
作者: xxm19810711    时间: 2014-12-3 15:47

回复 9# DAIC


    %%i 调用的文件名是包含 扩展名 txt的,如何去掉这个扩展名呢?
作者: DAIC    时间: 2014-12-3 16:14

回复 11# xxm19810711
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b *.txt') do (
  3.     sed -i "s/%%~ni//g" "%%i"
  4. )
复制代码

作者: xxm19810711    时间: 2014-12-3 16:20

回复 12# DAIC


    成功了,太感谢了!!!!牛人
作者: CrLf    时间: 2014-12-3 17:14

纯属个人爱好:
  1. gawk "FNR==1{name=FILENAME;gsub(/\.[^\.]+$/,\"\",name)}{gsub(name,\"\")>=0;print >FILENAME \".tmp\"}" *.txt
  2. del *.txt
  3. ren *.txt.tmp *.
复制代码





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