我们bat也有自己的<br>
bat吧
全部回复
仅看楼主
level 13
没什么意义的前情提要:
久违地用bat写脚本,结果莫名其妙被编码肘击了。
而且很奇怪的是连续echo了3行中文,偏偏是中间那一行编码出了问题:
echo [1] 小
echo [2] 标准(推荐)
echo [3] 大 (2k及以上)
研究了半天都不知道原因,干脆一不做二不休把三行都串起来了,果然没再报错:
set NLM=^
set BR=^^^%NLM%%NLM%^%NLM%%NLM%
echo [1] 小%BR% [2] 标准(推荐) %BR% [3] 大 (2k及以上)
(set NLM=^
(空行1)
(空行2)
)这条指令是将换行符"\n"存入了NLM变量中。
原理是^会将下一个字符转义。
但如果下一个字符是"\n",则会被忽略,转而转义"\n"后的下一个字符,即使它也是"\n"。(解释器会预先将"\r"都移除)
但是%NLM%无法被直接使用,因为解释器有一轮预处理,此时%NLM%等价于直接换行。
所以需要再封装一层来瞒过预处理。
2025年10月30日 08点10分 1
level 13
两个空行果然被贴吧吞了……
set NLM=^之后必须要接连续2个空行的
2025年10月30日 08点10分 2
level 13
居然还能在吧里看到认识的人
2025年11月27日 01点11分 3
预处理直接用enabledelayedexpansion就好了嘛,其它都太烧脑了
2025年11月27日 02点11分
1