AHK中如何追加含标点的文本到文件且不出现异常断行问题?
问题原因
你当前的写法存在核心语法错误,导致AHK没有正确识别多行文本块,最终出现格式错乱、异常断行:
- 错误套入了额外的圆括号,且没有按照AHK延续段(多行文本)的语法规则放置文本块起始标记,AHK会将多行内容里的逗号、引号、换行符识别为命令参数分隔符,而非普通文本内容
- 未指定文本缩进处理规则和换行符标准,代码里为了排版加的前置缩进会被一并写入文件,换行符识别异常就会出现断行错乱
正确操作步骤
- 修正
FileAppend的多行文本语法:多行文本需要使用AHK原生延续段写法,不要在文本块外层额外套圆括号。命令行写完FileAppend,后直接换行,单独以(作为文本块起始标记,文本内容写完后单独一行放),后面再接目标文件路径、写入参数。 - 配置延续段参数消除格式干扰:在文本块起始的
(后面添加控制参数:LTrim:自动移除代码中为了排版给每行加的前置缩进,不会把代码编辑时的对齐空格写入文件Join`r`n:明确指定使用Windows标准CRLF换行符,避免异常断行
- 指定写入编码:在写入参数位置添加
UTF-8标识,避免特殊字符、标点出现解析异常。默认参数下FileAppend为追加写入模式,如果需要覆盖原文件,可以再加w参数。
修正后的可直接运行代码
FileAppend, ( LTrim Join`r`n {"accounts": [ { "active": true, "type": "dummy", "ygg": { "extra": { "clientToken": "123456789", "userName": "BX0W" }, "iat": 1655273051, "token": "BX0W" } } ], "formatVersion": 3 ), accounts.json, UTF-8
注意:常规标点、双引号不需要额外转义会被原样写入,只有内容里包含AHK特殊字符(百分号、反引号)时,才需要在对应字符前加一个反引号转义。
内容的提问来源于stack exchange,提问作者Umut Koçak
相关产品推荐
相关产品推荐

