标题: [文本处理] bat脚本求助替换字符串时会在空行多打印出ECHO已关闭 [打印本页]
作者: 占卜家 时间: 2024-8-9 08:53 标题: bat脚本求助替换字符串时会在空行多打印出ECHO已关闭
- (for /f "tokens=1,* delims=:" %%a in ('type "!filename!"') do (
- echo %%a
- echo %%a | find "File" >nul
- if errorlevel 1 (
- if "%%a"=="" (
- echo 666
- ) else (
- if "%%b"=="" (
- echo %%a >> "%tempDir%\!jsonFile!_updated.json"
- ) else (
- echo 55555
- echo null
- echo %%a:%%b >> "%tempDir%\!jsonFile!_updated.json"
- )
- )
- ) else (
- echo "File":"!new_string!", >> "%tempDir%\!jsonFile!_updated.json"
- )
- ))
复制代码
这个代码替换字符串时会在空行多打印出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’ 提示信息等...
- for /f "usebackq tokens=1* delims=:" %%a in ("!filename!") do (
- echo,%%a
- echo,%%a|find "File">nul
- if errorlevel 1 (
- if "%%b"=="" (
- echo,%%a>>"%tempDir%\!jsonFile!_updated.json"
- ) else (
- echo,55555
- echo,null
- echo,%%a:%%b>>"%tempDir%\!jsonFile!_updated.json"
- )
- ) else (
- echo,"File":"!new_string!",>>"%tempDir%\!jsonFile!_updated.json"
- )
- )
复制代码
作者: 77七 时间: 2024-8-9 18:06
- for /f "tokens=1* delims=[]" %%a in ('find /n "File" ^<"!filename!"') do (
- set #%%a=1
- )
- (for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"!filename!"') do (
- if defined #%%a (
- for /f "delims=:" %%x in ("%%b") do (
- echo %%x:"!new_string!"
- )
- ) else (
- echo=%%b
- )
- ))> "%tempDir%\!jsonFile!_updated.json"
复制代码
重新写
作者: 占卜家 时间: 2024-8-14 11:21
谢谢各位大佬,问题已解决
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |