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

[文本处理] 批处理如何将文本中的指定内容替换成某一字符?

比如有一批文本文件,内容类似与: 哈哈哈:<sdfsdf>嗯嗯</sfsf><sfsdaf>好哈哈哈哈</lwioutew><dsafasdf>46546465465</ldsjfosjf><fhsafsaj>6464654654678</sdfsafj>
现在想把所有文本文件里的尖括号及其内的内容批量替换成某一字符,比如 |,该怎样写命令?
1

评分人数

本帖最后由 /zhqsystem/zhq 于 2016-1-20 14:16 编辑

回复 1# ndyo
  1. @echo off&(setlocal enabledelayedexpansion)>nul 2>nul
  2. for /f "delims=" %%i in ('type ".\1.txt"')do (
  3. for /f "delims=" %%j in ("%%i")do (set "#name#=%%j"
  4.   for /l %%k in (0,1,8192)do if /i "!#name#:~%%k,1!"=="<" set/a "m+=1"
  5.   for /l %%k in (0,1,8192)do if /i "!#name#:~%%k,1!"==">" set/a "n+=1"
  6.   if /i "!m!"=="!n!" (
  7.    for /l %%k in (1,1,!m!)do (
  8.     if not defined #name_l# for /f "delims=<" %%l in ("%%j")do set "#name_l#=%%l"
  9.     for /f "tokens=1,* delims=<" %%l in ("!#name#!")do (set "#name#=%%m"
  10.      for /f "tokens=1,* delims=<" %%n in ("!#name#!")do (set "#name_n#=%%n"
  11.       if /i "!#name_n#:~0,1!"=="/" (
  12.        set "#name_new#=!#name_new#!bathome.net^<%%n"
  13.       )else (
  14.        set "#name_new#=!#name_new#!^<%%n"
  15.       )
  16.       set "#new#=!#name_l#!bathome.net!#name_new#!"
  17.      )
  18.     )
  19.    )
  20.   )else (
  21.    (echo,自动应答错误原始值:%%j)
  22.   )
  23.   set "#new#=!#new#!"
  24.   if defined #new# (
  25.    (echo,!#new#!)
  26.   )
  27.   set "#name_l#="&set "#name_new#="&set "new="&set "m="&set "n="
  28.   echo/
  29. )
  30. )
  31. pause
复制代码
  1. @echo off&(setlocal enabledelayedexpansion)>nul 2>nul
  2. for /f "delims=" %%i in ('type ".\1.txt"')do (
  3. for /f "delims=" %%j in ("%%i")do (set "#name#=%%j"
  4.   for /l %%k in (0,1,8192)do if /i "!#name#:~%%k,1!"=="<" set/a "m+=1"
  5.   for /l %%k in (0,1,8192)do if /i "!#name#:~%%k,1!"==">" set/a "n+=1"
  6.   if /i "!m!"=="!n!" (
  7.    for /l %%k in (1,1,!m!)do (
  8.     for /f "tokens=1,* delims=<" %%l in ("!#name#!")do (set "#name#=%%m"
  9.      for /f "delims=>" %%l in ("!#name#!")do (set "#name_l#=%%l"
  10.       if /i "!#name_l#:~0,1!"=="/" (
  11.        set "new=!new!bathome.net^<%%l^>"
  12.       )else (
  13.        set "new=!new!^<%%l^>"
  14.       )
  15.      )
  16.     )
  17.    )
  18.   )else (
  19.    (echo,自动应答错误原始值:%%j)
  20.   )
  21.   if defined new (
  22.    (echo,!new!)
  23.   )
  24.   set "new="&set "m="&set "n="
  25.   echo/
  26. )
  27. )
  28. pause
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

本帖最后由 pcl_test 于 2016-11-19 22:17 编辑
  1. mshta http://bathome.net/s/hta/ "type('a.txt').replace(/<[^>]*>/g,'|')"
复制代码
  1. sed "s/<[^>]*>/|/g" "a.txt"
复制代码
  1. powershell -c "(Get-Content 'a.txt') -replace '<[^>]*>','|'"
复制代码

TOP

返回列表