2016-06-06 3 views
0

Я работаю с компанией, которая перерабатывает ноутбуки для компаний, и мы получаем заказы около 20-100 ноутбуков за заказ. Мы устанавливаем новые изображения на них после того, как мы обновляем сам ноутбук, но у нас возникают проблемы с написанием сценария автоматического именования. Я была поставлена ​​задача найти скрипт, который может сделать следующее:Как я могу сделать пакетный файл найти серийный номер ноутбука в электронной таблице и переименовать имя хоста из записи в электронной таблице?

  1. Прочитайте серийный номер Биос ноутбука
  2. Сравните этот серийный номер таблицы или CSV файл, и найти серийный номер есть
  3. Затем найдите нужное имя компьютера в колонке рядом с серийным номером
  4. Наконец, переименовать компьютер, используя новое имя, найденное в файле

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

До сих пор у меня есть следующий сценарий, чтобы использовать серийный номер в качестве переменной, в случае необходимости:

for /f "skip=1 delims=" %%J in ('wmic bios get serialnumber') do (set serial=%%J Goto :done) :done

После того как мы этот сценарий, набрав% серийный% входы серийного номера, относящиеся к этому компьютер.

Я также знаю, что следующий сценарий будет переименовать компьютер, используя переменную в качестве нового имени:

wmic computersystem where caption='%computername%' rename %variable%

Где% переменная% является переменной, мы надеемся, найти в таблице. Я просто не знаю, как найти эту новую переменную (новое имя компьютера), которая будет найдена в электронной таблице. Любая помощь будет принята с благодарностью.

+0

Я также хотел бы написать этот скрипт в PowerShell, но я никогда раньше не использовал PowerShell. Ноутбуки, на которых я запускаю этот скрипт, должны быть чистыми и не иметь загруженных материалов, прежде чем мы их отправим, так что имейте это в виду. – Umbrathe

+0

Предполагая, что ваш CSV находится в форме 'SerialNumber, Hostname', вы можете использовать [FIND] (http://ss64.com/nt/find.html), чтобы получить строку в CSV. [Разделить строку] (http://stackoverflow.com/questions/1707058/how-to-split-a-string-in-a-windows-batch-file), используя 'FOR', чтобы получить ваше имя пользователя. – Tim

ответ

0

Ниже приведен код, который я использовал для проблемы, с которой я столкнулся.

for /f "tokens=2 delims==" %%J in ('wmic bios get serialnumber /value') do set serial=%%J 
Find /I "%serial%" {Location of file} > {Location of confirmation file} 
For /f "tokens=1,2* delims=," %%G in ({Location of confirmation file}) do set HN=%%H 
wmic computersystem where caption='%computername%' rename %HN%` 

кажется сложным, но строки текста они делают следующее:

1) Находит серийный номер биозе

2) Находит строку в файле CSV и выводит все строка в текстовом документ

3) Устанавливает нужное имя из текстового документа в качестве переменной

4) переименовывает имя компьютера к этому желаемому вару iable name

 Смежные вопросы

  • Нет связанных вопросов^_^