[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】求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 提供
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
我是小白,希望老师多多帮助

回复 1# yyz219
  1. @echo off
  2. set "OldFile=a.txt"
  3. set "NewFile=%OldFile%.tmp"
  4. set "InputFile=1.txt"
  5. cd /d "%~dp0"
  6. set /p NewStr=<"%InputFile%"
  7. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%OldFile%"') do (
  8.     if "%%b" == "" (
  9.         echo,
  10.     ) else (
  11.         set "OldStr=%%b"
  12.         setlocal enabledelayedexpansion
  13.         if not "!OldStr:wall =!" == "!OldStr!" (
  14.             echo wall %NewStr%
  15.         ) else (
  16.             echo,!OldStr!
  17.         )
  18.         endlocal
  19.     )
  20. ))>"%NewFile%"
  21. move /y "%NewFile%" "%OldFile%" >nul
复制代码
1

评分人数

测试代码之前请做好备份

TOP

回复 2# ShowCode
我试一试先 谢谢
我是小白,希望老师多多帮助

TOP

回复 2# ShowCode


    成功了 再次感谢
我是小白,希望老师多多帮助

TOP

回复 2# ShowCode

*.JPG 的路径中,如果有 ! 号,! 号会丢失

例如:

D:\PE整理碎片(很好)\修改PE\程序\!墙纸\灰色.jpg
  运行以后变为:

D:\PE整理碎片(很好)\修改PE\程序\墙纸\灰色.jpg

能不能修改一下?谢谢
我是小白,希望老师多多帮助

TOP

回复 5# yyz219


2楼第14行的%NewStr%改成!NewStr!
  1. @echo off
  2. set "OldFile=a.txt"
  3. set "NewFile=%OldFile%.tmp"
  4. set "InputFile=1.txt"
  5. cd /d "%~dp0"
  6. set /p NewStr=<"%InputFile%"
  7. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%OldFile%"') do (
  8.     if "%%b" == "" (
  9.         echo,
  10.     ) else (
  11.         set "OldStr=%%b"
  12.         setlocal enabledelayedexpansion
  13.         if not "!OldStr:wall =!" == "!OldStr!" (
  14.             echo wall !NewStr!
  15.         ) else (
  16.             echo,!OldStr!
  17.         )
  18.         endlocal
  19.     )
  20. ))>"%NewFile%"
  21. move /y "%NewFile%" "%OldFile%" >nul
复制代码
1

评分人数

测试代码之前请做好备份

TOP

回复 6# ShowCode
再次感谢
我是小白,希望老师多多帮助

TOP

  1. @echo off
  2. set /p var=<1.txt
  3. (for /f "tokens=1*" %%i in (a.txt) do (
  4.     if /i not "%%i"=="wall" (
  5.         if "%%j"=="" (
  6.             echo,%%i
  7.         ) else (
  8.             echo,%%i %%j
  9.         )
  10.     ) else (
  11.         echo,%%i %var%
  12.     )
  13. ))>temp
  14. move /y "temp" "a.txt"
复制代码
1

评分人数

TOP

回复 8# qixiaobin0715


    我试一试先 谢谢
我是小白,希望老师多多帮助

TOP

回复 8# qixiaobin0715


    成功了 再次感谢
我是小白,希望老师多多帮助

TOP

返回列表