标题: [文本处理] 如何用批处理或Powershell替换文本内容?[已解决] [打印本页]
作者: fly9902 时间: 2022-11-12 22:58 标题: 如何用批处理或Powershell替换文本内容?[已解决]
本帖最后由 fly9902 于 2022-11-13 22:45 编辑
现有a.txt,内容为:
C:\Users\Fast\AppData\Roaming=$APPDATA
C:\Windows\system32=$SYSDIR
其他省略.....
b.txt,内容为:
WriteRegStr HKCU "Software\3DMAX\R23.2\6101:804" "RoamableRootFolder" "C:\Users\Fast\AppData\Roaming\"
WriteRegStr HKCU "Software\3DMAX\R23.2\6101:804" "SystemFolder" "C:\Windows\system32\"
其他省略.....
最终用a.txt里的内容替换b.txt里内容为:
WriteRegStr HKCU "Software\3DMAX\R23.2\6101:804" "RoamableRootFolder" "$APPDATA\"
WriteRegStr HKCU "Software\3DMAX\R23.2\6101:804" "SystemFolder" "$SYSDIR\"
其他省略.....
作者: terse 时间: 2022-11-13 08:08
本帖最后由 terse 于 2022-11-13 21:05 编辑
纯P 比POWERSHEL复杂 试下显示的是否符合- @echo off
- setlocal enabledelayedexpansion
- (for /f "delims=" %%a in (b.txt) do (
- set /p str=
- set n=-1
- set "s="
- set "s1="
- for %%A in (%%a) do (
- set "s=!s! !s1!"
- set "s1=%%A"
- )
- for /f "tokens=1* delims==" %%A in ("!str!") do echo !s:~2! %%B& echo %%B
- ))<a.txt
- pause
复制代码
作者: fly9902 时间: 2022-11-13 17:32
纯P 比POWERSHEL复杂 试下显示的是否符合
terse 发表于 2022-11-13 08:08
非常感谢大佬,但还是不成功,不吝赐教,感谢
作者: 小白龙 时间: 2022-11-13 17:57
本帖最后由 小白龙 于 2022-11-13 18:07 编辑
回复 1# fly9902 - #@&cls&powershell "gc '%~f0'|out-string|iex"&pause&exit
- $a = @'
- C:\Users\Fast\AppData\Roaming=$APPDATA
- C:\Windows\system32=$SYSDIR
- '@ | ConvertFrom-StringData
-
- $b = @'
- WriteRegStr HKCU "Software\3DMAX\R23.2\6101:804" "RoamableRootFolder" "C:\Users\Fast\AppData\Roaming\"
- WriteRegStr HKCU "Software\3DMAX\R23.2\6101:804" "SystemFolder" "C:\Windows\system32\"
- '@ -split '\r?\n'
-
- foreach ($b_ in $b)
- {
- foreach ($ak in $a.Keys)
- {
- $ake = [regex]::Escape($ak)
- if ($b_ -match $ake)
- {
- $av = ($a.GetEnumerator() | ? name -EQ $ak).Value
- $b_ -replace $ake, $av
- }
- }
- }
复制代码
作者: hfxiang 时间: 2022-11-13 18:36
- @echo off
- rem 保存为ANSI格式
- setlocal enableDelayedExpansion
- for /f "tokens=* delims==" %%a in (b.txt) do (
- set "str=%%a"
- for /f "tokens=1* delims==" %%b in (a.txt) do (
- call set str=%%str:%%b=%%c%%
- )
- echo;!str!
- )
复制代码
作者: terse 时间: 2022-11-13 21:05
回复 3# fly9902
修改了 试一下吧
作者: fly9902 时间: 2022-11-13 22:44
回复 5# hfxiang
感谢 ,在后面加>>c.txt成功- @echo off
- rem 保存为ANSI格式
- setlocal enableDelayedExpansion
- for /f "tokens=* delims==" %%a in (b.txt) do (
- set "str=%%a"
- for /f "tokens=1* delims==" %%b in (a.txt) do (
- call set str=%%str:%%b=%%c%%
- )
- echo;!str! >>c.txt
- )
- pause
复制代码
作者: fly9902 时间: 2022-11-13 22:45
回复 6# terse
感谢大佬的热心帮助,修改下5楼的成功
作者: fly9902 时间: 2022-11-13 22:46
回复 4# 小白龙
感谢大佬的关注帮忙,按5楼方法基本解决
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |