Board logo

标题: [文本处理] 【已解决】批处理如何把某个文件的内容插入到另外一个文件内容中的指定字符中间? [打印本页]

作者: toyerspollors    时间: 2021-10-3 17:54     标题: 【已解决】批处理如何把某个文件的内容插入到另外一个文件内容中的指定字符中间?

本帖最后由 toyerspollors 于 2021-10-4 21:51 编辑

“文件1.json”中有一段内容为

  "Function": [],


我想把“文件2.md”的内容插入到[]字符中间,达到下方效果。

  "Function": [

插入的文件内容
],


爬了2个小时历史帖子,找不到对胃口的。 盼老师帮助一下。
作者: idwma    时间: 2021-10-3 19:36

  1. @powershell "type '%~0'|select -skip 1|out-string|iex"&pause&exit
  2. $c='文件1.json'
  3. $a=gc $c
  4. $b=gc 文件2.md
  5. $a -replace '"Function" W:\[.*\],',"[$b]"|out-file $c -encoding default
复制代码

作者: qixiaobin0715    时间: 2021-10-3 19:49

回复 1# toyerspollors
你提供的信息太少,最起码要将“文件1.json”的含有“"Function" W:[],”整行内容贴出来吧。
作者: toyerspollors    时间: 2021-10-3 22:24

回复  toyerspollors
你提供的信息太少,最起码要将“文件1.json”的含有“"Function" W:[],”整行内容贴 ...
qixiaobin0715 发表于 2021-10-3 19:49


我已更正,我要插入的这行就下方这些字符,没有多余的了。盼老师帮助一下!
"Function": [],
作者: qixiaobin0715    时间: 2021-10-3 23:26

本帖最后由 qixiaobin0715 于 2021-10-5 08:36 编辑

提醒一下,空格也是字符,如果前后还有空格的话,请自行加上:
  1. @echo off
  2. for /f "delims=" %%a in (1.json) do (
  3.     if "%%a"==""Function": []," (
  4.         echo,"Function": [
  5.         type "文件2.md"
  6.         echo,],
  7.     ) else (
  8.         echo,%%a
  9.     )
  10. )
  11. pause
复制代码

作者: Fit    时间: 2021-10-4 12:09

@echo off&setlocal enabledelayedexpansion

findstr . 1.json>2.json
del 1.json /q
ren 2.json 1.json
call:ff
call:tyHead
echo Function^": [>>2.json
for /f "tokens=*" %%i in (2.md) do echo %%i>>2.json
echo ],^">>2.json
call:tyEnd
del 1.json /q
ren 2.json 1.json
pause&exit

:ff
set /a n1=0
for /f "tokens=*" %%i in (1.json) do (
  set /a n1+=1
  if "%%i"==""Function": []," (goto:eof)
)

:tyHead
set /a num=0
(for /f "tokens=*" %%i in (1.json) do (
set /a num+=1
if !num! equ %n1% goto:eof
echo %%i))>2.json

:tyEnd
(for /f "skip=%n1% tokens=*" %%i in (1.json) do echo %%i>>2.json)
goto:eof
作者: Fit    时间: 2021-10-4 12:10

1.json和2.md和批处理一个目录下
作者: toyerspollors    时间: 2021-10-4 21:39

提醒一下,空格也是字符,如果前后还有空格的话,请自行加上:
qixiaobin0715 发表于 2021-10-3 23:26



    "delims" 这里少了一个=号
作者: Batcher    时间: 2021-10-4 21:46

回复 6# Fit


一行move可以取代del+ren,例如:
  1. move /y 2.json 1.json
复制代码

作者: toyerspollors    时间: 2021-10-4 21:50

@echo off&setlocal enabledelayedexpansion

findstr . 1.json>2.json
del 1.json /q
ren 2.json 1.js ...
Fit 发表于 2021-10-4 12:09



    看起来感觉有些复杂
作者: Fit    时间: 2021-10-5 10:07

回复 9# Batcher


   学习了




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