找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20428|回复: 8

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

[复制链接]
发表于 2022-12-14 09:44:24 | 显示全部楼层 |阅读模式
本帖最后由 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()
发表于 2022-12-14 10:14:30 | 显示全部楼层

  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技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-12-14 10:18:05 | 显示全部楼层
将以ANSI编码格式保存为1.txt
将以ANSI编码格式保存为1.1.txt
执行结果 (2.txt)
hfxiang 发表于 2022-12-14 10:14



    我试一试先,辛苦了
 楼主| 发表于 2022-12-14 10:25:27 | 显示全部楼层
将以ANSI编码格式保存为1.txt
将以ANSI编码格式保存为1.1.txt
执行结果 (2.txt)
hfxiang 发表于 2022-12-14 10:14



    成功了,非常感谢

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

代码又是怎样的,谢谢
发表于 2022-12-14 10:41:07 | 显示全部楼层

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

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-12-14 10:45:37 | 显示全部楼层
hfxiang 发表于 2022-12-14 10:41



    我在试一试,非常感谢
 楼主| 发表于 2022-12-14 10:52:40 | 显示全部楼层
hfxiang 发表于 2022-12-14 10:41



    成功了,再次感谢
发表于 2022-12-14 17:29:38 | 显示全部楼层
回复 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技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-12-14 18:22:35 | 显示全部楼层
回复  yyz219
Batcher 发表于 2022-12-14 17:29



    我试一试 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 07:54 , Processed in 0.033789 second(s), 14 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表