在这篇文章(如何使用Windows批处理脚本将空ASCII字符(nul)写入文件?)中,确实有一些方法可以用批处理脚本向文件中写入ASCII NULL字符(nul)。
然而,我没有找到一种方法来将NULL字符存储到变量中。
假设文件null.nil
包含一个单独的NULL字符,将其重定向到set /P
中似乎不起作用,该变量为空:
< "null.nil" set /P NULL=
set NULL
for /F
看起来也无法工作,因为它似乎会忽略遇到的每个 NULL 字符。依靠相同的文件 null.nil
,以下内容将导致变量为空:
for /F %%S in ('type "null.nil"') do set NULL=%%S
set NULL
将set
语法更改为set "NULL=%%S"
或set NULL=^%%S
并不会改变任何内容,尽管命令行type "null.nil"
确实会回显NULL字符(在我的Windows 10 x64机器上; 将type
的输出重定向到文件中,并使用十六进制编辑器查看它)。
那么我该如何将变量设置为单个NULL字符?NULL字符可以从文件中获取(例如像null.nil
),也可以通过某些巧妙的黑科技生成,但我不希望它直接嵌入到批处理文件中。