CMD给我错误“系统找不到文件output.txt”

时间:2019-06-03 23:15:06

标签: windows batch-file

我有一个批处理脚本,该脚本创建一个名为“ 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

2 个答案:

答案 0 :(得分:1)

您没有使用完整路径,因此output.txt可以放在任何地方。您的示例在我的计算机上可以运行,所以也许您的真实代码有些不同?

由于您已经在使用for /F,因此不需使用临时文件就可以直接解析命令:

FOR /F "tokens=1,* delims==" %%A IN ('wmic os get Caption /value^|find "="') DO @set info=%%B
echo.info=%info%

答案 1 :(得分:0)

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

@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"