Altera caracteres no endereço MAC de uma variável

0

Esse lote é usado com alguns outros arquivos como scripts de inicialização como parte do processo de nova imagem do Symantec Ghost Cast para o Windows 7 que estamos prestes a realizar. Juntos, eles automatizam totalmente todo o processo de recriação de imagem do Sysprep, renomeando o computador do arquivo de texto, depois associando o computador ao domínio e colocando-o na UO correta.

Eu sei que existem outras linguagens de programação e linguagens de script que podem executar esses mesmos processos muito melhor, mas não há tempo para aprendê-las neste momento. Certos MSs Power-shell e VBS são melhores candidatos, mas eu não sou gasto com aqueles que ainda são, e nem são meus colegas de trabalho. Outros aplicativos de renomeação funcionam de forma intermitente para mim. O Compname.exe não funciona com o Windows 7. O Wsname funciona de forma intermitente ou não funciona com os nossos modelos Dell 790, servidores Power Edge 850, 860 e R200. Nossos outros modelos não parecem ter problemas importantes usando os aplicativos de terceiros - GX620, 740, 745, 755, 760 e 780.

Eu prefiro usar aplicativos nativos no sistema operacional. Obviamente, o netdom.exe não é nativo (é necessário obter arquivos do executável RSAT), mas é uma importação fácil do sistema operacional e obrigatória para as imagens.

Então, por favor, forneça todas as respostas com os programas que estou usando atualmente (arquivos batch, netdom, getmac e good ole text).

Esse arquivo em lote realiza o seguinte:

  1. Usa o getmac.exe para localizar o endereço MAC da máquina local (sendo reimaginada)
  2. Variabliza o endereço MAC local (%% G)
  3. Canaliza o endereço MAC variavel e compara-o ao arquivo getmac2.txt (%% A)
  4. Pega a variável associada (%% B) e
  5. Coloca o %% B como o strComputername
  6. O & & instrução interrompe a operação quando o endereço MAC é encontrado, em vez de analisar o arquivo inteiro
  7. O rótulo insert_name executa o netdom.exe, fecha o lote e reinicializa o computador. A opção / FORCE é usada, mas não está listada aqui durante o teste. A 'pausa' é usada apenas para testes também.

Um script subsequente associa o computador ao domínio.

Agora, é isso que eu gostaria de experimentar ... Gostaria de poder modificar a variável %% G substituindo os traços '-' no endereço MAC por dois-pontos: '. Getmac.exe produz o endereço MAC como este 11-22-33-44-55-66. No entanto, outro programa de administração me fornece uma lista com endereços MAC como este 11: 22: 33: 44: 55: 66. Meu arquivo getmac2.text lista os endereços MAC com os dois pontos. Obviamente, posso remover automaticamente os dois pontos de um editor de texto, mas a intenção é reduzir o máximo de etapas possíveis. Também canalizar a variável %% G para outro arquivo não será um problema se for mais fácil executar a substituição da string.

ACREDITE OU NÃO, O ROTEIRO FAZ O TRABALHO PERFEITAMENTE!

O conteúdo do arquivo getmac2.txt é formatado assim:

11: 22: 33: 44: 55: 66,88D-350-03-780 11: 22: 33: 44: 55: 77,44E-351-13-790 11: 22: 33: 44: 55 : 88,66F-352-23-760 11: 22: 33: 44: 55: 99,22G-353-33-R200 11: 22: 33: 44: 55: 00,11H-354-43-620

setlocal enabledelayedexpansion


FOR /F "usebackq delims= " %%G IN ('getmac.exe /FO table /NH') DO (
    FOR /F "usebackq delims=, tokens=1,2" %%A IN ('type C:\wsname\getmac2.txt') DO if %%G EQU %%A SET strComputername=%%B && goto insert_name
)    

:insert_name
C:\windows\system32\netdom.exe renamecomputer %COMPUTERNAME% /NewName:%strComputername%

pause
    
por Terrence 22.03.2013 / 19:52

1 resposta

1

Use %variable:from=to% ou !variable:from=to! (com expansão atrasada).

set mac=%%G
set mac=%mac:-=:%
    
por 22.03.2013 / 21:42