Как вывести значения командного файла для каждого хоста в текстовом файле на отдельный вывод

У меня есть следующий код

    set list=%directory%\Computers.txt
    For /F "usebackq delims = " %%a in ("%list%") do (
FOR /F "tokens=2 delims='='" %%A in ('wmic /node:@%list% OS Get csname /value') do SET system=%%A 

    For /F "usebackq delims = " %%a in ("%list%") do Echo Host Name: %%a >> "%directory%\Info\%%a.log"
    )

сценарий будет выводить значения только последнего хоста в списке Computers.txt во всех хостах %%a.log

Я тоже пробовал

    FOR /F "tokens=2 delims='='" %%A in ('wmic /node:@%list% OS Get csname /value') do SET system=%%A 
    
    For /F "usebackq delims = " %%a in ("%list%") do Echo Host Name: %%a >> "%directory%\Info\%%a.log"

выход

psexec @C:\Admin\UDB_ALL\Computers.txt systeminfo| findstr /C:"Physical"

является

Total Physical Memory:     3,071 MB Available Physical Memory: 2,417 MB systeminfo exited on Ayman-VM with error code 0.  
Total Physical Memory:     3,071 MB Available Physical Memory: 2,397 MB systeminfo exited on Ayman-VM-2 with error code 0.  
Total Physical Memory:     3,071 MB Available Physical Memory: 2,434 MB systeminfo exited on Ayman-VM-3 with error code 0

как я могу вывести каждое значение для каждого хоста в желаемом %%a.log?

Командная строка в Windows не имеет ничего общего с "DOS".

a_horse_with_no_name 31.03.2021 00:39

Я вижу, ты не потрудился последовать моему совету из своего последнего вопроса. Опять же, не устанавливайте переменные среды. Просто используйте переменные FOR напрямую с командами ECHO. Также я не уверен, почему вы используете PSEXEC. WMIC может реализовать ту же логику. Во вложенных командах FOR смысла нет. Вы действительно слишком усложнили это.

Squashman 31.03.2021 00:40

@Squashman Я пробовал FOR, как вы предлагали, и получил тот же результат. Я создал файлы computer1.log computer2.log, но результат, который я получаю в обоих файлах, - это спецификации computer2. Я попробовал psexec, чтобы узнать, изменит ли он что-нибудь только в выводе, я знаю, что wmic /node:@%list% будет работать

Ayman 31.03.2021 00:44

@Squashman FOR /F "tokens=2 delims='='" %%A in ('wmic /node:@%list% OS Get csname /value') do SET system=%%AFor /F "usebackq delims = " %%a in ("%list%") do echo -------------------------------------------- >> "%directory%\Info\%%a.log"For /F "usebackq delims = " %%a in ("%list%") do Echo Host Name: %%a >> "%directory%\Info\%%a.log" Я тоже пробовал вот так

Ayman 31.03.2021 00:49

@Squashman при запуске этой команды на CMD psexec @C:\Admin\UDB_ALL\Computers.txt systeminfo| findstr /C:"Physical" я получаю следующий Total Physical Memory: 3,071 MB Available Physical Memory: 2,417 MB systeminfo exited on Ayman-VM with error code 0. Total Physical Memory: 3,071 MB Available Physical Memory: 2,397 MB systeminfo exited on Ayman-VM-2 with error code 0. Total Physical Memory: 3,071 MB Available Physical Memory: 2,434 MB systeminfo exited on Ayman-VM-3 with error code 0., как я могу вывести каждое значение на желаемый %%a.log?

Ayman 31.03.2021 01:10

Вам не понадобится сторонняя утилита PSExec или цикл For: @%SystemRoot\System32\wbem\WMIC.exe /Node:@C:\Somewhere\Computers.txt /FailFast:1000 /Output:AllNames.csv OS Get CSName /Format:CSV. Если вы на самом деле ищете не только CSName, что очень вероятно, потому что оно, вероятно, будет таким же, как имя уже в Computers.txt, и вы пытаетесь получить дополнительную информацию, например, список информации о ПК, тогда вопрос был покрыт раньше. Я советую использовать вместо этого PowerShell или VBScript / JScript, которые встроены и намного лучше подходят для этого типа задач.

Compo 31.03.2021 03:34

@Ayman, помещающий столько кода и вывод в комментарий, в основном нечитаем. Любая подобная дополнительная информация должна быть помещена в ваш вопрос, используя ссылку редактировать.

Squashman 31.03.2021 04:42

@Compo, спасибо за ответ, проблема в том, что это должен быть только пакетный файл, потому что он предназначен для организации, которая не поддерживает PowerShell, и поэтому я ограничен параметрами, а с вашим решением я не могу установить свободное место на диске значение в ГБ

Ayman 31.03.2021 19:20

В моем комментарии используется та же команда, что и в вашей, WMIC, поэтому ваш код также предоставляет результат в байтах, а не в ГБ. Кстати, командные файлы не могут работать напрямую с количеством байтов, эквивалентным примерно 2 ГБ или более, поэтому вам нужно будет поискать на этом сайте обходной путь, чтобы разделить байты на рабочие фрагменты, выполнить преобразования, а затем при необходимости присоединяйтесь, (если вы не можете использовать другие встроенные инструменты создания сценариев, VBScript, JScript или PowerShell). Я также настоятельно рекомендую снова не использовать очень медленную утилиту systeminfo.exe, если только это не станет крайней мерой.

Compo 31.03.2021 19:28

@Compo, большое спасибо за помощь, я подтвердил, что можно использовать PowerShell в организации, так как он будет использоваться только на сервере

Ayman 31.03.2021 19:34
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
10
36
0

Другие вопросы по теме