Use %variable:from=to%
ou !variable:from=to!
(com expansão atrasada).
set mac=%%G
set mac=%mac:-=:%
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:
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