找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20748|回复: 9

[文本处理] 【已解决】求bat:替换含 wall 行内容(最好纯批处理,第三方也行)。谢谢

[复制链接]
发表于 2023-11-24 11:23:13 | 显示全部楼层 |阅读模式
本帖最后由 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 提供

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-11-24 12:09:25 | 显示全部楼层
回复 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技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-11-24 12:25:54 | 显示全部楼层
回复 2# ShowCode
我试一试先 谢谢
 楼主| 发表于 2023-11-24 12:29:26 | 显示全部楼层
回复 2# ShowCode


    成功了 再次感谢
 楼主| 发表于 2023-11-24 22:03:54 | 显示全部楼层
回复 2# ShowCode

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

例如:

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

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

能不能修改一下?谢谢
发表于 2023-11-24 23:16:06 | 显示全部楼层
回复 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技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-11-25 07:42:54 | 显示全部楼层
回复 6# ShowCode
再次感谢
发表于 2023-11-25 09:05:11 | 显示全部楼层
  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技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-11-25 10:18:36 | 显示全部楼层
回复 8# qixiaobin0715


    我试一试先 谢谢
 楼主| 发表于 2023-11-25 10:32:56 | 显示全部楼层
回复 8# qixiaobin0715


    成功了 再次感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 10:24 , Processed in 0.022225 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表