CMD выдает мне ошибку "Система не может найти файл output.txt" - PullRequest
0 голосов
/ 04 июня 2019

У меня есть пакетный скрипт, который создает файл с именем «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 ]

1 голос
/ 04 июня 2019

Вы не используете полный путь, поэтому output.txt может оказаться где угодно.Ваш пример работает на моей машине, так что, может быть, ваш реальный код немного отличается?

Поскольку вы уже используете for /F, вы можете просто проанализировать команду напрямую без временного файла:

FOR /F "tokens=1,* delims==" %%A IN ('wmic os get Caption /value^|find "="') DO @set info=%%B
echo.info=%info%
0 голосов
/ 04 июня 2019

Я бы, вероятно, сделал бы это без создания промежуточного файла для чтения и удаления:

@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 есть (я думаю) ошибка, которая может помешать WMIC.exe подхватить файл mof.xsl. Однако есть как временные, так и более постоянные исправления или обходные пути, которые действительно выходят за рамки вашего вопроса.

[Редактировать /]

Я думал, что включу этот на основе , чтобы быстрее найти альтернативное решение:

@For /F "EOL=HTokens=2*" %%A In (
    'Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /V ProductName 2^>Nul'
)Do @Set "info=%%B"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...