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

[文本处理] bat脚本求助替换字符串时会在空行多打印出ECHO已关闭

[复制链接]
发表于 2024-8-9 08:53:44 | 显示全部楼层 |阅读模式
  1. (for /f "tokens=1,* delims=:" %%a in ('type "!filename!"') do (
  2.     echo %%a
  3.     echo %%a | find "File" >nul
  4.     if errorlevel 1 (
  5.         if "%%a"=="" (
  6.             echo 666
  7.         ) else (
  8.             if "%%b"=="" (
  9.                 echo %%a >> "%tempDir%\!jsonFile!_updated.json"
  10.             ) else (
  11.                 echo 55555
  12.                 echo null
  13.                 echo %%a:%%b >> "%tempDir%\!jsonFile!_updated.json"
  14.             )
  15.         )
  16.     ) else (
  17.         echo "File":"!new_string!", >> "%tempDir%\!jsonFile!_updated.json"
  18.     )
  19. ))
复制代码
这个代码替换字符串时会在空行多打印出ECHO已关闭,如下,请问大佬们如何解决
{
    "UpgradeDst":"MasterNode",
"File":"fw_mod_ht892x_g3_g3_g3_20240617_2.2.18_jzq_master_STAR_KF.0072_20240619133837_FCC_13_rf_9_1_V2625.bin",
    "ActiveTime":"0-0-0 0:1:0",
    "Version":"V2624",
    "RetryTimes":20,
    "Timeout":10,
    "BroadTransferDelay":2,
    "BroadReTransferTimes":20,
    "blocksize":200,
    "NodeList":[     
ECHO ���ڹر�״̬��
     ]
}
发表于 2024-8-9 12:02:59 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-8-9 12:18 编辑

回复 1# 占卜家

一楼代码一定是源代码的一个片段,因变量延迟已被开启,变量 new_string 已被定义...
订正并简化该代码片段如下,其中删除了 %%a=="" 分支,因其总不会出现;用 for/f 参数 usebackq 减免了 'type ...' 屏显文件内容的操作;用 echo,... 替换 echo ... 可避免出现 ‘echo on/off’ 提示信息等...

  1. for /f "usebackq tokens=1* delims=:" %%a in ("!filename!") do (
  2.     echo,%%a
  3.     echo,%%a|find "File">nul
  4.     if errorlevel 1 (
  5.         if "%%b"=="" (
  6.             echo,%%a>>"%tempDir%\!jsonFile!_updated.json"
  7.         ) else (
  8.             echo,55555
  9.             echo,null
  10.             echo,%%a:%%b>>"%tempDir%\!jsonFile!_updated.json"
  11.         )
  12.     ) else (
  13.         echo,"File":"!new_string!",>>"%tempDir%\!jsonFile!_updated.json"
  14.     )
  15. )
复制代码
发表于 2024-8-9 18:06:06 | 显示全部楼层
  1. for /f "tokens=1* delims=[]" %%a in ('find /n "File" ^<"!filename!"') do (
  2.         set #%%a=1
  3. )
  4. (for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"!filename!"') do (
  5.         if defined #%%a (
  6.                 for /f "delims=:" %%x in ("%%b") do (
  7.                         echo %%x:"!new_string!"
  8.                 )
  9.         ) else (
  10.                 echo=%%b
  11.         )
  12. ))> "%tempDir%\!jsonFile!_updated.json"
复制代码

重新写
 楼主| 发表于 2024-8-14 11:21:42 | 显示全部楼层
谢谢各位大佬,问题已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 21:02 , Processed in 0.013454 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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