Board logo

标题: [文本处理] [已解决]求批处理:用sed.exe或者gawk.exe替换文本内容,谢谢 [打印本页]

作者: yyz219    时间: 2022-12-14 09:44     标题: [已解决]求批处理:用sed.exe或者gawk.exe替换文本内容,谢谢

本帖最后由 yyz219 于 2022-12-14 16:58 编辑

下面代码很好:
  1. gawk "/D 盘使用情况/{getline intxt<\"1.1.txt\";gsub(/D 盘使用情况/,intxt)}1" 1.txt>2.tx
复制代码
原来的问题:

需要被替换的文本:模板.txt
' & cls & CScript /nologo /e:vbscript "%~f0" & exit
Set a = CreateObject("WScript.Shell")
Set b = a.CreateShortcut(a.SpecialFolders("Desktop") & "\D盘使用情况.lnk")
b.TargetPath = "C:\Windows\System32\cmd.exe"
b.Arguments = "/C ""文件路径"""
b.Save()
*************************************************
里面的:文件路径————按照“按里面内容替换.txt”提供的内容替换
“按里面内容替换.txt”内容(变化的,可能有空,也可能带回车)格式:

D:\1绿色软件\bat批处理\D盘使用情况 .bat
*********************************************************************************
替换以后,生成:new模板.txt,要达到的效果:
' & cls & CScript /nologo /e:vbscript "%~f0" & exit
Set a = CreateObject("WScript.Shell")
Set b = a.CreateShortcut(a.SpecialFolders("Desktop") & "\D盘使用情况.lnk")
b.TargetPath = "C:\Windows\System32\cmd.exe"
b.Arguments = "/C ""D:\1绿色软件\bat批处理\D盘使用情况 .bat"""
b.Save()
作者: hfxiang    时间: 2022-12-14 10:14

  1. ' & cls & CScript /nologo /e:vbscript "%~f0" & exit
  2. Set a = CreateObject("WScript.Shell")
  3. Set b = a.CreateShortcut (a.SpecialFolders ("Desktop") & "\D 盘使用情况.lnk")
  4. b.TargetPath = "C:\Windows\System32\cmd.exe"
  5. b.Arguments = "/C "" 文件路径 """
  6. b.Save()
复制代码
以ANSI编码格式保存为1.txt
  1. D:\1绿色软件\bat批处理\D盘使用情况.bat
复制代码
以ANSI编码格式保存为1.1.txt
执行
  1. gawk "/b.Arguments = \"\/C \"\".*\"\"\"/{getline intxt<\"1.1.txt\";$0=\"b.Arguments = \\\"/C \\\"\\\"\"intxt\"\\\"\\\"\\\"\"}1" 1.txt>2.txt
复制代码
结果 (2.txt)
  1. ' & cls & CScript /nologo /e:vbscript "%~f0" & exit
  2. Set a = CreateObject("WScript.Shell")
  3. Set b = a.CreateShortcut (a.SpecialFolders ("Desktop") & "\D 盘使用情况.lnk")
  4. b.TargetPath = "C:\Windows\System32\cmd.exe"
  5. b.Arguments = "/C ""D:\1绿色软件\bat批处理\D盘使用情况.bat"""
  6. b.Save()
复制代码

作者: yyz219    时间: 2022-12-14 10:18

将以ANSI编码格式保存为1.txt
将以ANSI编码格式保存为1.1.txt
执行结果 (2.txt)
hfxiang 发表于 2022-12-14 10:14



    我试一试先,辛苦了
作者: yyz219    时间: 2022-12-14 10:25

将以ANSI编码格式保存为1.txt
将以ANSI编码格式保存为1.1.txt
执行结果 (2.txt)
hfxiang 发表于 2022-12-14 10:14



    成功了,非常感谢

如果需要用同样的方法替换:D 盘使用情况

代码又是怎样的,谢谢
作者: hfxiang    时间: 2022-12-14 10:41

  1. gawk "/D 盘使用情况/{getline intxt<\"1.1.txt\";gsub(/D 盘使用情况/,intxt)}1" 1.txt>2.txt
复制代码

作者: yyz219    时间: 2022-12-14 10:45

hfxiang 发表于 2022-12-14 10:41



    我在试一试,非常感谢
作者: yyz219    时间: 2022-12-14 10:52

hfxiang 发表于 2022-12-14 10:41



    成功了,再次感谢
作者: Batcher    时间: 2022-12-14 17:29

回复 1# yyz219
  1. @echo off
  2. set /p NewStr=<"按里面内容替换.txt"
  3. set "NewStr=%NewStr:\=\\%"
  4. sed -r "s#(b.Arguments =).*#\1 \x22/C\x22 \x22\x22%NewStr%\x22\x22\x22#" "模板.txt" > "new模板.txt"
复制代码

作者: yyz219    时间: 2022-12-14 18:22

回复  yyz219
Batcher 发表于 2022-12-14 17:29



    我试一试 谢谢




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