Board logo

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

作者: 占卜家    时间: 2024-8-9 08:53     标题: bat脚本求助替换字符串时会在空行多打印出ECHO已关闭

  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 ���ڹر�״̬��
     ]
}
作者: aloha20200628    时间: 2024-8-9 12:02

本帖最后由 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. )
复制代码

作者: 77七    时间: 2024-8-9 18: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

谢谢各位大佬,问题已解决




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2