标题: [文本处理] [已解决]求批处理:用sed.exe或者gawk.exe替换文本内容,谢谢 [打印本页]
作者: yyz219 时间: 2022-12-14 09:44 标题: [已解决]求批处理:用sed.exe或者gawk.exe替换文本内容,谢谢
本帖最后由 yyz219 于 2022-12-14 16:58 编辑
下面代码很好:- 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
将- ' & 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()
复制代码
以ANSI编码格式保存为1.txt
将- D:\1绿色软件\bat批处理\D盘使用情况.bat
复制代码
以ANSI编码格式保存为1.1.txt
执行- gawk "/b.Arguments = \"\/C \"\".*\"\"\"/{getline intxt<\"1.1.txt\";$0=\"b.Arguments = \\\"/C \\\"\\\"\"intxt\"\\\"\\\"\\\"\"}1" 1.txt>2.txt
复制代码
结果 (2.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()
复制代码
作者: 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
- 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 - @echo off
- set /p NewStr=<"按里面内容替换.txt"
- set "NewStr=%NewStr:\=\\%"
- 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 |