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

[文本处理] [已解决]求助BAT如何删除txt文档中的指定字符?

今天工作中在处理一批文档的时候,文档中有很多日期是很久之前的,想把他们删除掉,一开始用的是文本替换软件,一个个的提取出来替换掉!
后来想到用bat处理,但是苦于自己技术能力不够,总是没能成功!

基本的问题是这样的,一批文档中含有A,B,C,D,E,F,G(举例用的特定字符)
现如今需要的结果是,将A,B,C,D,E,F,G从这批文档中剔除掉!

我用下面的这样的思路是剔除了整个文档,显然是错误的!本意只是将这些特定字符从文档里面原来的位置删除掉而已!
  1. for %%a in (A B C D E) do del /q *%%a*.txt
复制代码
谢谢大家!
1

评分人数

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

保存为bat,与需要修改的文件放在一起
  1. @echo off
  2. md New 2>Nul
  3. for /f "delims=" %%a in ('dir /b *.txt') do (
  4.   (for /f "usebackq delims=" %%b in ("%%a") do (
  5.     set "str=%%b"
  6.     setlocal enabledelayedexpansion
  7.     for %%c in (a b c e d e f g) do set "str=!str:%%c=!"
  8.     echo,!str!
  9.     endlocal
  10.   ))>"New\%%a"
  11. )
复制代码
保存为vbs,同样与需要修改的文件放在一起,试试看吧
  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. If Not FSO.FolderExists("New") Then
  3.    FSO.CreateFolder("New")
  4. End If
  5. For Each File In FSO.GetFolder(".").Files
  6.    Ext =FSO.GetExtensionName(File)
  7.    If LCase(Ext) = "txt" Then
  8.       Text = FSO.OpenTextFile(File,1).ReadAll
  9.       Set Re = New RegExp
  10.       Re.Pattern = "A|B|C|D|E|F|G"
  11.       Re.Global = True
  12.       Re.IgnoreCase = True
  13.       Str = Re.Replace(Text,"")
  14.       FSO.CreateTextFile("New\"&File.Name,True).Write Str
  15.    End If
  16. Next
  17. MsgBox "OK"
复制代码

TOP

回复 2# apang


    谢谢你,我发现很多txt的批处理都是您写的!

TOP

用sed.exe会比较简洁
  1. sed -i "s/A//g" test.txt
复制代码

TOP

  1. @echo off
  2. md New 2>Nul
  3. for /f "delims=" %%a in ('dir /b *.txt') do (
  4.   (for /f "usebackq delims=" %%b in ("%%a") do (
  5.     set "str=$%%b"
  6.     setlocal enabledelayedexpansion
  7.     for %%c in (a b c d e f g) do set "str=!str:%%c=!"
  8.     echo,!str:~1!
  9.     endlocal
  10.   ))>"New\%%a"
  11. )
复制代码
修改一下。假如文本某一行仅包含需要删除的字符(例如某一行仅有一个字符A),将得不到正确的结果。
1

评分人数

TOP

返回列表