我在我的Windows10命令提示符msinfo32 /report mysystem.txt中运行了以下脚本,它将机器的所有系统数据保存在一个文本文件中。
但是,当我在输出文本文件上运行字符串时,我没有得到任何输出。findstr /c:"System Name" mysystem.txt应该显示系统名称,但是它没有返回任何内容。我打开了文件,所有的文本都在那里,但是findstr没有认出它。
最后,我将文件扩展名更改为.csv,在excel中打开它,并将其保存为‘Text(MS).txt’文件。别问我为什么要这么做,我只是在抓吸管。然后,我就能够在保存为‘Text(MS).txt’的文件上成功地运行字符串。
有人能解释一下这种行为吗?我以为文本文件就是文本文件,只要它是纯文本。如何使命令行以文本(MS-DOS).txt格式直接输出.我在findstr中找不到这方面的选择,而谷歌搜索的结果却什么也没有。
提前感谢您的帮助。
发布于 2019-01-24 04:38:18
您遇到此问题的原因是,msinfo32以UCS-2Little Endian格式对文本文件进行编码,而findstr不支持UCS-2编码。当您在excel中打开文本文件并重新保存文档时,它会在由findstr支持的UTF-8中对该文件进行编码。解决此问题的方法如下:
msinfo32 /report mysystem.txt
type mysystem.txt > utf8.txt
findstr /c:"System Name" utf8.txttype命令将在屏幕上显示一个文本文件,但是当使用>字符时,它将将输出重定向到一个以UTF-8编码的文本文件。
如果您只是试图获取计算机名称,则可以运行以下命令:
hostname检索系统信息的一种更优雅的方法是通过powershell,它将允许您使用msinfo32以及更多更多的工具检索所有您可以检索的内容。只需在谷歌上搜索你正在寻找的库存物品和powershell。例如,搜索get主机名powershell。
https://serverfault.com/questions/950493
复制相似问题