batch-file - 胆汁文件输出到非结构化文本文件

标签 batch-file

我正在批处理文件中运行这两个命令 net users >> out.txtwmic qfe list full >>out.txt。这样做之后,wmic 命令的输出每隔一个字符就会显示空字符。有什么办法可以解决这个问题吗?当我在单独的文本文件中输出这两个命令信息时,输出非常好。我对为什么会这样感到非常困惑

最佳答案

wmic 使用小端 UTF-16 显示其输出,而 net users 使用常规 ANSI。在 UTF-16 中,每个字符都是两个字节长,标准 ASCII 字符集是其常规 ASCII 值后跟一个空字节。

当您首先运行 net users >> out.txt 时,您强制输出文件不是 UTF-16 编码文件,因此 wmic 命令显示不正确。 (顺便说一句,如果您只是尝试交换命令的顺序,您会发现 net users 命令会显示为中文字符。)

wmic 输出转换为 ANSI 的唯一方法是通过多个 for/f 循环运行它:

net users >> out.txt
for /f "delims=" %A in ('wmic qfe list full') do for /f "delims=" %B in ("%~A") do echo %B >> out.txt

请注意,如果您将其放入脚本中,则需要使用 %%A%%B 而不是 %A%B

关于batch-file - 胆汁文件输出到非结构化文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72074855/

相关文章:

windows - CMD提示-bat文件-Taskkill命令忽略启动/等待

file - 批处理文件中任务列表的退出状态?

if-statement - BATCH - RPS - 石头、剪刀、布 - 几轮后继续失败

java - 使用java从批处理文件备份/恢复mongoDB?

windows - 枚举目录中文件的相对路径

batch-file - 如何在批处理文件中运行多个命令?

Windows批处理脚本删除文件夹中除一个以外的所有内容

windows - FTP 将目录中的所有文件复制到本地目录

regex - 使用 perl 表达式批量重命名文件

windows - 从批处理文件以编程方式更新 PATH 中的文件夹