标题: [文本处理] 【已解决】求bat:替换含 wall 行内容(最好纯批处理,第三方也行)。谢谢 [打印本页]
作者: yyz219 时间: 2023-11-24 11:23 标题: 【已解决】求bat:替换含 wall 行内容(最好纯批处理,第三方也行)。谢谢
本帖最后由 yyz219 于 2023-11-25 12:31 编辑
完美解决了
方法1:
@echo off
set /p var=<1.txt
(for /f "tokens=1*" %%i in (a.txt) do (
if /i not "%%i"=="wall" (
if "%%j"=="" (echo,%%i) else (echo,%%i %%j)) else (echo,%%i %var%)))>temp
move /y "temp" "a.txt"
方法2:
@echo off
set "OldFile=a.txt"
set "NewFile=%OldFile%.tmp"
set "InputFile=1.txt"
cd /d "%~dp0"
set /p NewStr=<"%InputFile%"
(for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%OldFile%"') do (
if "%%b" == "" (
echo,
) else (
set "OldStr=%%b"
setlocal enabledelayedexpansion
if not "!OldStr:wall =!" == "!OldStr!" (
echo wall !NewStr!
) else (
echo,!OldStr!
)
endlocal
)
))>"%NewFile%"
move /y "%NewFile%" "%OldFile%" >nul
********************************************************************************************************************************
原来的问题:
需要替换的文本 a.txt(其中: D:\PE整理碎片(很好)\修改PE\程序\!墙纸\灰色.jpg——不是固定的):
... ...
//【3.设置墙纸】
wall D:\PE整理碎片(很好)\修改PE\程序\!墙纸\灰色.jpg
*********************************************************
处理以后需要的结果是:
... ...
//【3.设置墙纸】
wall X:\XX\XX\XX.jpg
其中:X:\XX\XX\XX.jpg————由 1.txt 提供
作者: ShowCode 时间: 2023-11-24 12:09
回复 1# yyz219 - @echo off
- set "OldFile=a.txt"
- set "NewFile=%OldFile%.tmp"
- set "InputFile=1.txt"
- cd /d "%~dp0"
- set /p NewStr=<"%InputFile%"
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%OldFile%"') do (
- if "%%b" == "" (
- echo,
- ) else (
- set "OldStr=%%b"
- setlocal enabledelayedexpansion
- if not "!OldStr:wall =!" == "!OldStr!" (
- echo wall %NewStr%
- ) else (
- echo,!OldStr!
- )
- endlocal
- )
- ))>"%NewFile%"
- move /y "%NewFile%" "%OldFile%" >nul
复制代码
作者: yyz219 时间: 2023-11-24 12:25
回复 2# ShowCode
我试一试先 谢谢
作者: yyz219 时间: 2023-11-24 12:29
回复 2# ShowCode
成功了 再次感谢
作者: yyz219 时间: 2023-11-24 22:03
回复 2# ShowCode
*.JPG 的路径中,如果有 ! 号,! 号会丢失
例如:
D:\PE整理碎片(很好)\修改PE\程序\!墙纸\灰色.jpg
运行以后变为:
D:\PE整理碎片(很好)\修改PE\程序\墙纸\灰色.jpg
能不能修改一下?谢谢
作者: ShowCode 时间: 2023-11-24 23:16
回复 5# yyz219
2楼第14行的%NewStr%改成!NewStr!- @echo off
- set "OldFile=a.txt"
- set "NewFile=%OldFile%.tmp"
- set "InputFile=1.txt"
- cd /d "%~dp0"
- set /p NewStr=<"%InputFile%"
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%OldFile%"') do (
- if "%%b" == "" (
- echo,
- ) else (
- set "OldStr=%%b"
- setlocal enabledelayedexpansion
- if not "!OldStr:wall =!" == "!OldStr!" (
- echo wall !NewStr!
- ) else (
- echo,!OldStr!
- )
- endlocal
- )
- ))>"%NewFile%"
- move /y "%NewFile%" "%OldFile%" >nul
复制代码
作者: yyz219 时间: 2023-11-25 07:42
回复 6# ShowCode
再次感谢
作者: qixiaobin0715 时间: 2023-11-25 09:05
- @echo off
- set /p var=<1.txt
- (for /f "tokens=1*" %%i in (a.txt) do (
- if /i not "%%i"=="wall" (
- if "%%j"=="" (
- echo,%%i
- ) else (
- echo,%%i %%j
- )
- ) else (
- echo,%%i %var%
- )
- ))>temp
- move /y "temp" "a.txt"
复制代码
作者: yyz219 时间: 2023-11-25 10:18
回复 8# qixiaobin0715
我试一试先 谢谢
作者: yyz219 时间: 2023-11-25 10:32
回复 8# qixiaobin0715
成功了 再次感谢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |