Board logo

标题: [文本处理] [已解决]如何用批处理在文本中添加内容? [打印本页]

作者: czvde    时间: 2022-3-14 18:57     标题: [已解决]如何用批处理在文本中添加内容?

本帖最后由 czvde 于 2022-3-16 17:21 编辑

“a.txt”内容:
4569
二一二零
8798
0123456零零一一
一三二=+123

“b.txt”内容:
456一一一一一
4587779879零零一一123579sf的
98746541819
二一二零1125646464


bat执行效果:
“a.txt”内容:
4569
二一二零
a
8798
0123456a
零零一一
一三二=+123

“b.txt”内容:
456一一一一一
4587779879b
零零一一123579sf的
98746541819
二一二零
b1125646464

已解决!!
作者: for_flr    时间: 2022-3-16 15:50

  1. #@&cls&powershell -c "gc '%~0'|out-string|iex"&pause&exit /b
  2. dir -filter *.txt|%{
  3.     $txt=@()
  4.     $name=$_.basename
  5.     gc $_|%{
  6.         switch -regex($_){
  7.            "零零一一"       {
  8.                $idx=$_.indexof($matches[0])
  9.                $txt+=$_.substring(0,$idx)+$name
  10.                $txt+=$_.substring($idx)
  11.            }
  12.            "二一二零"       {
  13.                $idx=$_.indexof($matches[0])
  14.                $txt+=$_.substring(0,$idx)+$matches[0]
  15.                $txt+=$name+$_.substring($idx+4)
  16.            }
  17.            default          {$txt+=$_}
  18.         }
  19.     }
  20.     sc $_ $txt
  21. }
复制代码
跟txt文本放同一层目录,测试前先备份txt。
作者: WHY    时间: 2022-3-16 22:43

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set LF=^
  4. for /f %%i in ('copy /z "%~f0" nul') do set "CRLF=%%i!LF!"
  5. for %%i in (*.txt) do (
  6.     (for /f "delims=" %%j in ('type "%%i"') do (
  7.         set "s=%%j"
  8.         for %%k in ("!CRLF!") do (
  9.             set "s=!s:二一二零=二一二零%%~k%%~ni!"
  10.             set "s=!s:零零一一=%%~ni%%~k零零一一!"
  11.         )
  12.         echo;!s!
  13.     )) > "%%i.Log"
  14. )
  15. pause
复制代码





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