Usando a 'consulta' dos Serviços de Terminal no arquivo em lotes

1

Eu tenho um arquivo em lotes que verifica vários dos nossos servidores para um usuário. Do comando:

query user %userID% /server:ServerName  

Eu quero capturar a saída antes de ir para a tela. Existe uma maneira de redirecionar a saída para uma variável?

A essência básica do que eu quero alcançar é isso - nós fazemos iterações em nossos servidores:

query user %userID% /server:Server1  
query user %userID% /server:Server2  
query user %userID% /server:Server3  
query user %userID% /server:Server4  

Em vez de enviar uma mensagem informando que o usuário não pôde ser encontrado em um servidor específico, eu gostaria que ele apenas me notificasse se encontrasse o usuário em um servidor.

    
por IAbstract 26.04.2010 / 19:39

2 respostas

2
for /F "tokens=1 delims=" %%i in ('query user %userID% /server:ServerName') do set ans=%%i

Se o usuário da consulta exibir linhas antes da que possui os dados desejados, será necessário adicionar skip=n , em que n é o número de linhas de saída antes do que é interessante para você . A especificação de delimitadores apropriados para o "delims=" permitirá que você o analise.

O PowerShell não seria o melhor caminho a seguir?

Se a saída contiver mais de uma linha significativa de saída, o resultado acima somente fornecerá os resultados da última linha. Adicionar a substituição de variável atrasada e comandos compostos após o "do" colocando-os em () pode permitir que você lide com isso.

Ou você pode redirecionar a saída para um usuário de consulta de arquivo% UserID% / user: ServerN > ServerN.txt e, em seguida, analisá-la com um / f ...

    
por 26.04.2010 / 23:15
0

A melhor maneira de descobrir o que colocar os delims é canalizar a saída para um arquivo e inspecionar a saída em um editor. Um espaço é provável. Portanto, apenas tenha certeza de que nas opções delims = é a última, se você deixar um espaço antes da citação de fechamento, então você obterá espaços como um delimitador. Você então provavelmente irá especificar os tokens também. Por exemplo, se você quiser que o 1º e o 4º campos sejam delimitados por um espaço, as opções seriam "tokens = 1,3,4 delims=" Para acessar aqueles que você extraiu de %% i, %% j e %% k.

    
por 27.04.2010 / 16:04