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

[文本处理] [已解决]求批处理:用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()
我是小白,希望老师多多帮助

  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()
复制代码
1

评分人数

TOP

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



    我试一试先,辛苦了
我是小白,希望老师多多帮助

TOP

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



    成功了,非常感谢

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

代码又是怎样的,谢谢
我是小白,希望老师多多帮助

TOP

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

评分人数

TOP

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



    我在试一试,非常感谢
我是小白,希望老师多多帮助

TOP

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



    成功了,再次感谢
我是小白,希望老师多多帮助

TOP

回复 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"
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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



    我试一试 谢谢
我是小白,希望老师多多帮助

TOP

返回列表