Board logo

标题: [文本处理] 如何替换指定特征的字符串 [打印本页]

作者: kissbzm    时间: 2018-2-9 22:27     标题: 如何替换指定特征的字符串

本帖最后由 pcl_test 于 2018-3-28 05:37 编辑

指定字符行替换后行所以 的字符  

指定特征 ;www 后面的 1,0=·啊2 替换成 a总·bc
1.txt 比如
1,0=·啊2|〓┤1111..11
1,0=·啊2|〓┤1111..11
1,0=·啊2|〓┤1111..11
;www
1,0=·啊2|〓┤1111..11
1,0=·啊2|〓┤1111..11
1,0=·啊2|12|〓1111..11


D:\测试\*.txt文件
1,0=·啊2|〓┤1111..11
1,0=·啊2|〓┤1111..11
1,0=·啊2|〓┤1111..11
;www
a总·bc|〓┤1111..11
a总·bc|〓┤1111..11
a总·bc|12|〓1111..11
作者: yhcfsr    时间: 2018-2-10 00:29

本帖最后由 yhcfsr 于 2018-2-10 00:31 编辑

PowerShell
怎么用,我在论坛很多帖子都讲过,不再口啰嗦
  1. $ScDir="F:\Test Dir"  #设置文件目录
  2. Get-ChildItem -Path $ScDir -Recurse -File|ForEach-Object{
  3.     $flag=0;$string=$null;
  4.     $content=Get-Content $_.FullName
  5.     foreach($line in $content){
  6.         if($line -match ';www'){$flag=1}
  7.         if($flag -eq 1){$line=($line -replace '1,0=·啊2','a总·bc');}
  8.         $string+=($line+"`r`n");
  9.     }
  10.     $string|Out-File -FilePath $_.FullName;
  11. }
复制代码

作者: kissbzm    时间: 2018-2-10 01:11

回复 2# yhcfsr


   
2003不可以 我安装的是1.0版本
作者: /zhqsystem/zhq    时间: 2018-2-10 19:06

由于涉及到特殊字符不一定都可以处理,以下是样本代码:
  1.   
  2. @Echo Off
  3. set "$=;www"
  4. for /f "delims=" %%i in ('dir/a-d/s/b "%~dp0*.txt"')do (
  5. call:1 "%%~fi"
  6. )
  7. pause
  8. goto:eof
  9. :1
  10. if not defined $ (echo,错误)>>"%~dp0错误记录.log"&goto:eof
  11. set "#="
  12. for /f "eol= tokens=* delims=" %%i in ('type "%~f1"')do (
  13. if /i "%%i"=="%$%" set "#=y"
  14. if not defined # (echo,%%i
  15. )else (
  16.   for /f "eol= tokens=1,* delims=|" %%j in ("%%i")do (
  17.    if /i "%%j"=="1,0=·啊2" (
  18.     echo,a总·bc^|%%k
  19.    )else (
  20.     echo,%%i
  21.    )
  22.   )
  23. )
  24. )
  25. goto:eof
复制代码

作者: WHY    时间: 2018-2-11 02:18

vbs 脚本
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. For Each f In fso.GetFolder(".").Files
  3.     strFile = f.Path
  4.     If LCase(Right(strFile, 4)) = ".txt" Then
  5.         Set objFile = fso.OpenTextFile(strFile, 1)
  6.         arr = Split(objFile.ReadAll(), ";www")
  7.         objFile.Close()
  8.         If UBound(arr) >= 1 Then arr(1) = Replace(arr(1), "1,0=·啊2", "a总·bc")
  9.         fso.OpenTextFile(strFile, 2).Write(Join(arr, ";www"))
  10.     End If
  11. Next
  12. MsgBox "Done"
复制代码

作者: kissbzm    时间: 2018-2-12 11:28

本帖最后由 kissbzm 于 2018-2-12 11:34 编辑

回复 5# WHY

F:\1\" 所以文件夹(子文件夹)的txt一起修改
可以加个 吗
作者: WHY    时间: 2018-2-24 11:48

递归遍历文件夹就行了
  1. srcDir = "E:\Test"
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. ReplaceString srcDir
  4. Function ReplaceString(ByRef srcDir)
  5.     For Each f In fso.GetFolder(srcDir).Files
  6.         strFile = f.Path
  7.         If LCase(Right(strFile, 4)) = ".txt" Then
  8.             Set objFile = fso.OpenTextFile(strFile, 1)
  9.             arr = Split(objFile.ReadAll(), ";www")
  10.             objFile.Close()
  11.             If UBound(arr) >= 1 Then arr(1) = Replace(arr(1), "1,0=·啊2", "a总·bc")
  12.             fso.OpenTextFile(strFile, 2).Write(Join(arr, ";www"))
  13.         End If
  14.     Next
  15.     For Each fd In fso.GetFolder(srcDir).SubFolders
  16.         ReplaceString fd.Path
  17.     Next
  18. End Function
  19. MsgBox "Done"
复制代码





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