首页 > 解决方案 > CMD 给我错误“系统找不到文件 output.txt”

问题描述

我有一个批处理脚本,它创建一个名为“output.txt”的文件并写入一些系统信息。我想打开该文件并将该信息存储在一个变量中。但是,当我运行脚本时,它给了我“系统找不到文件 output.txt”。这也是写入文件的同一脚本。

@echo off
(wmic os get Caption)>>output.txt
for /F "tokens=2* skip=1" %%G in (output.txt) do set info=%%G
echo version:%info%
pause

(wmic os get Caption)>>output.txt之所以有效,是因为它创建了一个包含以下行的文件:

Caption                    
Microsoft Windows 10 Home  

例如,我只是想获取 Windows 操作系统名称并将其存储在变量中

info=Windows 10 Home

标签: windowsbatch-file

解决方案


我可能会在不创建要读取然后删除的中间文件的情况下这样做:

@For /F Tokens^=6Delims^=^" %%A In ('WMIc OS Get Caption /Format:MOF 2^>Nul')Do @Set "info=%%A"

您应该在会话期间将值(没有任何不必要的尾随字符)存储到变量中,只要您不修改/覆盖它。%info%cmd.exe

Echo Version:%info%

请注意,Windows 7 中存在一个错误(我认为),这可能会阻止mof.xsl文件被WMIC.exe. 不过,有临时和更永久的修复或解决方法,这确实超出了您的问题范围。

[编辑 /]

我想我会包含这个基于,以便更快地检索替代解决方案:

@For /F "EOL=HTokens=2*" %%A In (
    'Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /V ProductName 2^>Nul'
)Do @Set "info=%%B"

推荐阅读