标题: [文本处理] 如何替换文本中特定字符串/内容中的部分字符 [打印本页]
作者: yym黄诗瑶 时间: 2017-10-10 15:31 标题: 如何替换文本中特定字符串/内容中的部分字符
本帖最后由 pcl_test 于 2017-10-13 09:55 编辑
有1.nsi文件如下- !define Version "7.5.4.79"
- !define Build "2017.09.19"
- !define Branch "R1.4"
- !define SvnVersion "20557"
- ;输出路径
- OutFile "H:\ShareFiles\package\I7\${Branch}\${Build} V${Version}\AVCON - Meeting_${Version}(auto)(Build_${SvnVersion}).exe"
- InstallDirRegKey HKLM "SOFTWARE\AVCONi7-Meeting" "Path"
-
- RequestExecutionLevel admin
复制代码
需要把!define Version "7.5.4.79"替换成!define Version "7.8.5.123"
需要把!define Build "2017.09.19"替换成!define Build "2017.10.10"文本中所有内容均要保留,包括中文注释
作者: /zhqsystem/zhq 时间: 2017-10-10 20:28
不开延迟
(echo,!define Version "7.8.5.123"
....
)>2.txt
more +2 1.txt >2.txt
作者: bbaa 时间: 2017-10-10 22:54
- @echo off
- @cd /d %~dp0
- setlocal enabledelayedexpansion
- Set "Inputfile=文件路径"
- Set "Outputfile=输出路径"
- for %%i in (
- "1"
- "2"
- ) do (
- Set /a K+=1
- SEt Tuh!k!=%%~i
- )
- for %%i in (
- "!define Version "7.8.5.123"
- "!define Build "2017.10.10"
- ) do (
- Set /a Tush+=1
- Call :SetText !Tush!
- (
- For %%i in (%Inputfile%) do (
- for /f "Delims=" %%a in (%%~fi) do (
- Set /a Line+=1
- if defined Text_!Line! {
- echo;Text_!Line!
- ) else (
- echo;%%i
- )
- )
- )
- )>%Outputfile%
- :SetText
- Set "Text_!Tuh%~1!=%%i"
- Goto :Eof
复制代码
作者: yym黄诗瑶 时间: 2017-10-11 11:16
没有修改到啊,一点变化没有呢。输出文件的文本都没生成- @echo off
- @cd /d %~dp0
- setlocal enabledelayedexpansion
- Set Inputfile=H:\i7standard\I7_R1.4\package\00 BIN_Meeting_R1.4\I7-Meeting Setup - auto - R1.4.nsi
- Set Outputfile=H:\i7standard\I7_R1.4\package\00 BIN_Meeting_R1.4\2.nsi
- for %%i in (
- "1"
- "2"
- ) do (
- Set /a K+=1
- SEt Tuh!k!=%%~i
- )
- for %%i in (
- "!define Version "7.8.5.123"
- "!define Build "2017.10.10"
- ) do (
- Set /a Tush+=1
- Call :SetText !Tush!
- (
- For %%i in (%Inputfile%) do (
- for /f "Delims=" %%a in (%%~fi) do (
- Set /a Line+=1
- if defined Text_!Line! {
- echo;Text_!Line!
- ) else (
- echo;%%i
- )
- )
- )
- )>%Outputfile%
- :SetText
- Set "Text_!Tuh%~1!=%%i"
- Goto :Eof
复制代码
回复 3# bbaa
作者: 见与不见 时间: 2017-10-12 11:04
本帖最后由 见与不见 于 2017-10-12 11:16 编辑
文本是非ansi编码的,先手动修改编码,在用批处理修改
批处理替换实例- @echo off
- cd.>_tmp.txt
- setlocal enabledelayedexpansion
- for /f "tokens=1* delims=:" %%i in ('findstr /n .* jqq.txt') do (
- set xiao=%%j
- if not "!xiao!"=="" set "xiao=!xiao:注册表=!"
- >>"_tmp.txt" echo.!xiao!
- )
- start notepad.exe _tmp.txt
复制代码
作者: 见与不见 时间: 2017-10-12 11:22
文本是非ansi编码的,先手动修改编码,在用批处理修改
批处理替换实例
见与不见 发表于 2017-10-12 11:04
这个问题不是在于怎么去全部替换,你本身NSIS都脚本是UTF8无BOM编码的,需要转换编码,使用批处理自动替换字符,你还得把完全匹配和替换这样都话 ,有这功夫不如手动修改,另外我建议的是,正则模糊匹配字符串进行替换,以后再次修改依然可以用,不需要再去管修改都内容是什么,一劳永逸。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |