【问题标题】:spaces/nulls inserted into redirected output of the cmd command插入到 cmd 命令的重定向输出中的空格/空值
【发布时间】:2013-04-18 19:49:32
【问题描述】:

当我运行命令时

wmic memorychip get capacity

在 cmd 窗口的命令行中,屏幕上的输出如下所示:

Capacity    
2147483648 

但是,如果我将此命令添加到批处理文件并尝试将输出重定向到文件,例如:

wmic memorychip get capacity >> %LOG%

(其中 %LOG% 只是我想要附加数据的日志文件),它在日志文件中保存为:

C a p a c i t y         

 2 1 4 7 4 8 3 6 4 8     

这里在每个字符之前都插入了空格。在 Notepad++ 中,它显示 NUL 已插入,由于某种原因,我无法将其粘贴到此处:(

有谁知道为什么输出会这样改变以及如何避免这种转换?

【问题讨论】:

    标签: batch-file null output spaces


    【解决方案1】:

    肯定是Unicode。

    试试

    wmic memorychip get capacity |more>> %LOG%
    

    【讨论】:

    • 如果你使用wmic memorychip get capacity /value,它可能在你的日志文件中看起来更好,它会给你Capacity=2147483648
    • 不同意,/value 不适用于我使用的命令,但使用 |more 效果很好。
    【解决方案2】:

    如果您有输出文件但无法再次运行原始命令,cat original.txt | tr -d "\00" > cleaned.txt 将生成一个删除空字符的新文件。该命令假定通用 Unix shell 工具可用,例如 BusyBox 提供的那些。

    【讨论】:

      【解决方案3】:

      问题是 wmic 在 unicode 中工作,而 cmd 在 ascii 中。试试这个:

      for /f "delims=" %a in ('wmic memorychip get capacity') do @for /f "delims=" %b in ("%a") do echo %b > log
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-08
        • 2012-07-05
        • 2016-09-09
        • 2021-09-09
        • 2019-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多