none
Dúvida Script .bat RRS feed

  • Pergunta

  • Prezados,

    Estou tentando fazer um script para gerenciar o tempo de energia do monitor, incluir o comando para todos é até simples, entretanto, estou tentado setar um tempo para um grupo de estações e para outro grupo de estações outro tempo...escrevi até o momento o seguinte:

    @echo off
    echo Seta gerenciamento de energia do monitor
    echo %computername%
    if %computername% == psfn-1525718 (
            echo powercfg change monitor-timeout-ac 10
    ) else (if %computername% neq %computername% (
            echo powercfg change monitor-timeout-ac 5
     )
    )


    O que eu queria era o seguinte: para estações psfn-xxxxx, psfn-yyyyyyy, psfn-zzzzzz, setem o comando de 10 min, e para as demais estações (diferentes das listadas anteriormente), podem setar 5min.

    Poderiam dar uma luz? Não entendo nada de .bat

    Grato,


    Edinaldo Oliveira

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    ** Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde. **

    ----------------------------------------------------------------------

    Convidem seus colegas para participarem do fórum Technet Brasil, assim todos ganham!!! Para entender melhor como, clique aqui.


    sexta-feira, 21 de novembro de 2014 14:46

Respostas

  • Se .BAT tivesse o OR (ou) seria o ideal, mas não tem.

    Também não gosto de ficar criando uma cadeia grande de IFs.

    Eu faria assim:

    @ECHO OFF
    
    ::TRÊS CASOS
    IF %COMPUTERNAME% == psfn-xxxxx   echo powercfg change monitor-timeout-ac 10 & GOTO :EOF
    IF %COMPUTERNAME% == psfn-yyyyyyy echo powercfg change monitor-timeout-ac 10 & GOTO :EOF
    IF %COMPUTERNAME% == psfn-zzzzzz  echo powercfg change monitor-timeout-ac 10 & GOTO :EOF
    
    ::PARA OS DEMAIS COMPUTADORES
    echo powercfg change monitor-timeout-ac 5


    Fábio de Paula Junior

    • Marcado como Resposta Edinaldo Junior sexta-feira, 21 de novembro de 2014 17:35
    sexta-feira, 21 de novembro de 2014 15:37
    Moderador
  • @ECHO OFF
    findstr /i %computername% c:\temp\computadores.txt > nul
    IF %ERRORLEVEL% EQU 0 echo powercfg change monitor-timeout-ac 10 & GOTO :EOF
    
    echo powercfg change monitor-timeout-ac 5

    Utilizo o findstr pra procurar dentro do arquivo computadores.txt.

    Se ele encontra o comando retorna errorlevel=0


    Fábio de Paula Junior

    • Marcado como Resposta Edinaldo Junior segunda-feira, 24 de novembro de 2014 12:46
    segunda-feira, 24 de novembro de 2014 12:23
    Moderador

Todas as Respostas

  • Se .BAT tivesse o OR (ou) seria o ideal, mas não tem.

    Também não gosto de ficar criando uma cadeia grande de IFs.

    Eu faria assim:

    @ECHO OFF
    
    ::TRÊS CASOS
    IF %COMPUTERNAME% == psfn-xxxxx   echo powercfg change monitor-timeout-ac 10 & GOTO :EOF
    IF %COMPUTERNAME% == psfn-yyyyyyy echo powercfg change monitor-timeout-ac 10 & GOTO :EOF
    IF %COMPUTERNAME% == psfn-zzzzzz  echo powercfg change monitor-timeout-ac 10 & GOTO :EOF
    
    ::PARA OS DEMAIS COMPUTADORES
    echo powercfg change monitor-timeout-ac 5


    Fábio de Paula Junior

    • Marcado como Resposta Edinaldo Junior sexta-feira, 21 de novembro de 2014 17:35
    sexta-feira, 21 de novembro de 2014 15:37
    Moderador
  • Fabio, pois é...depois pensei algo assim como você falou:

    @echo off
    echo Seta gerenciamento de energia do monitor
    echo %computername%
    if %computername% equ PSFN-1525718 (goto sit1)
    if %computername% neq PSFN-1525718 (goto sit2) else (goto fim)


    :sit1
    powercfg change monitor-timeout-ac 10
    echo Seta 10
    goto fim

    :sit2
    powercfg change monitor-timeout-ac 5
    echo Seta 5

    :fim

    Entretanto, teria como colocar mais de um computador na mesma linha? tipo:

    IF %COMPUTERNAME% == psfn-xxxxx & psfn-yyyyy & psfn-pppppp

    Obrigado!


    Edinaldo Oliveira

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    ** Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde. **

    ----------------------------------------------------------------------

    Convidem seus colegas para participarem do fórum Technet Brasil, assim todos ganham!!! Para entender melhor como, clique aqui.

    sexta-feira, 21 de novembro de 2014 16:05
  • Acredito que não.

    Fábio de Paula Junior

    sexta-feira, 21 de novembro de 2014 16:40
    Moderador
  • Pra ficar em uma única linha poderia fazer um encadeamento de IF-ELSE, não sei se compensa, e também não fica muito legivel.

    Fábio de Paula Junior

    sexta-feira, 21 de novembro de 2014 16:41
    Moderador
  • Segui sua dica, veja código final:

    @ECHO OFF

    :LISTAGEM COMPUTADORES PARA 30MIN
    :----------------------
    :EDINALDO
    IF %COMPUTERNAME% == PSFN-1525718 powercfg change monitor-timeout-ac 30 & echo Setado Desligamento monitor 30 minutos & GOTO :EOF
    :DRA JANIFFER
    IF %COMPUTERNAME% == PSFN-3870242 powercfg change monitor-timeout-ac 30 & echo Setado Desligamento monitor 30 minutos & GOTO :EOF
    :DR ISMAEL
    IF %COMPUTERNAME% == PSFN-3453990 powercfg change monitor-timeout-ac 30 & echo Setado Desligamento monitor 30 minutos & GOTO :EOF
    :DRA MIRIAN
    IF %COMPUTERNAME% == PSFN-3870238 powercfg change monitor-timeout-ac 30 & echo Setado Desligamento monitor 30 minutos & GOTO :EOF
    :DR NELSON
    IF %COMPUTERNAME% == PSFN-3870241 powercfg change monitor-timeout-ac 30 & echo Setado Desligamento monitor 30 minutos & GOTO :EOF
    :DR BRUNO
    IF %COMPUTERNAME% == PSFN-3870240 powercfg change monitor-timeout-ac 30 & echo Setado Desligamento monitor 30 minutos & GOTO :EOF
    :DRA MARYSSA
    IF %COMPUTERNAME% == PSFN-3870239 powercfg change monitor-timeout-ac 30 & echo Setado Desligamento monitor 30 minutos & GOTO :EOF


    :LISTAGEM COMPUTADORES PARA 5MIN
    powercfg change monitor-timeout-ac 5
    echo Setado Desligamento monitor 5 minutos

    A outra alternativa, seria, ao invés pelo nome da estação, comparar com algum arquivo instalado na estação...o que acha? melhor assim ou com o arquivo? (só não sei como seria o código)

    Grato,


    Edinaldo Oliveira

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    ** Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde. **

    ----------------------------------------------------------------------

    Convidem seus colegas para participarem do fórum Technet Brasil, assim todos ganham!!! Para entender melhor como, clique aqui.

    sexta-feira, 21 de novembro de 2014 16:45
  • É uma boa ideia essa de usar arquivo. Eu gosto dessa opção do arquivo porque ela já fica preparada para ser usada até pra quem não entende de script porque basta adicionar o nome do computador no arquivo, dessa forma o seu script também já fica preparado para qualquer quantidade de computadores.

    Fábio de Paula Junior

    sexta-feira, 21 de novembro de 2014 17:00
    Moderador
  • Tens ideia de como seria esse código para ver o arquivo?

    Edinaldo Oliveira

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    ** Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde. **

    ----------------------------------------------------------------------

    Convidem seus colegas para participarem do fórum Technet Brasil, assim todos ganham!!! Para entender melhor como, clique aqui.

    sexta-feira, 21 de novembro de 2014 17:07
  • @ECHO OFF
    findstr /i %computername% c:\temp\computadores.txt > nul
    IF %ERRORLEVEL% EQU 0 echo powercfg change monitor-timeout-ac 10 & GOTO :EOF
    
    echo powercfg change monitor-timeout-ac 5

    Utilizo o findstr pra procurar dentro do arquivo computadores.txt.

    Se ele encontra o comando retorna errorlevel=0


    Fábio de Paula Junior

    • Marcado como Resposta Edinaldo Junior segunda-feira, 24 de novembro de 2014 12:46
    segunda-feira, 24 de novembro de 2014 12:23
    Moderador
  • Fabio, no caso, é só ir colocando os computadores que quero que tenham 10min no arquivo computadores.txt ou no caso, ele só verifica se existe o arquivo no computador e seta 10min?

    O echo é realmente necessário?

    Valeu!


    Edinaldo Oliveira

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    ** Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde. **

    ----------------------------------------------------------------------

    Convidem seus colegas para participarem do fórum Technet Brasil, assim todos ganham!!! Para entender melhor como, clique aqui.

    segunda-feira, 24 de novembro de 2014 12:26
  • Fábio, testei aqui....primeira!!!!

    Ficou perfeito, pois é só cadastrar o computador no arquivo txt...ficou bem mais decente agora..

    No caso, só tirei o "echo"

    Valeu mesmo, abraço!!


    Edinaldo Oliveira

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    ** Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde. **

    ----------------------------------------------------------------------

    Convidem seus colegas para participarem do fórum Technet Brasil, assim todos ganham!!! Para entender melhor como, clique aqui.


    segunda-feira, 24 de novembro de 2014 12:47
  • Edinaldo,

    Eu só mantive o echo ali porque no script que você postou no inicio estava assim, imagino que por questão de testes.


    Fábio de Paula Junior

    segunda-feira, 24 de novembro de 2014 13:27
    Moderador