Board logo

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

作者: ndyo    时间: 2016-1-18 17:21     标题: 批处理如何将文本中的指定内容替换成某一字符?

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

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

作者: pcl_test    时间: 2016-1-20 19:01

本帖最后由 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 '<[^>]*>','|'"
复制代码





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