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

[文本处理] 如何替换指定特征的字符串

本帖最后由 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: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. }
复制代码

TOP

回复 2# yhcfsr


   
2003不可以 我安装的是1.0版本

TOP

由于涉及到特殊字符不一定都可以处理,以下是样本代码:
  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
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

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"
复制代码

TOP

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

回复 5# WHY

F:\1\" 所以文件夹(子文件夹)的txt一起修改
可以加个 吗

TOP

递归遍历文件夹就行了
  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"
复制代码

TOP

返回列表