У меня есть задача запросить некоторые имена хостов для их серийного номера, хранящегося в BIOS.У меня есть имена хостов в текстовом файле, обрабатываются с помощью цикла for, клиенты запрашивают серийный номер с другим циклом for, а результат направляется в другой текстовый файл.
Это не проблема, если хост отключен или не отвечает.Имя хоста записывается в текстовый файл, серийный номер остается пустым, и сценарий затем переходит к следующей записи во входном файле.Но если хост отвечает, и в переменной сохраняется серийный номер, сценарий сначала записывает в выходной файл, как и положено, но затем он записывает другую строку с тем же именем хоста и пустым серийным номером, прежде чем перейти к следующей строке ввходной файл.
@ECHO OFF
set list=c:\temp\input.txt
for /F %%C in (%list%) do (
for /F "skip=1" %%S in ('wmic /node:%%C bios get serialnumber') do (
echo %%C - %%S >>c:\temp\output.txt)
)
pause
Это приводит к выводу, который выглядит следующим образом:
DC6068WA00829 -
DC6054WA00178 -
DC6061WA00065 - R93NSI3
DC6061WA00065 -
DC6061WA00064 - R0KBN3S
DC6061WA00064 -
DC6023LA034284 -
DC6038LA034272 -
Как вы можете видеть, когда хост не отвечает, потому что он отключен или не может связаться ни с чемпричина, это переходит к следующему так же, как и должно.Но когда кто-то отвечает, он сразу же записывает другую строку, используя только имя хоста и тире.
Я попытался сделать команду записи в выходной файл отдельным вызовом подпрограммы, я попытался удалить записьпеременная %% S, чтобы увидеть, не мешает ли это каким-то образом, я пытался сохранить результаты в различных переменных перед выводом их в файл, но ничего не меняет.
Я могу очистить полученную информациюфайл без особых проблем.В основном я просто хочу знать, чего мне не хватает, что могло бы вызвать это.
Буду признателен за любую помощь или понимание.