CaioMarcio
Membro Júnior-
Posts
4 -
Cadastrado em
-
Última visita
Reputação
0-
Opções da instrução IF em arquivos BAT
CaioMarcio respondeu ao tópico de CaioMarcio em Programação - outros
Escolhendo a opção SI (Inicializar somente o IIS) entra na opção PD (Finalizar o IIS e descarrega as DLLs). Alterei o BAT usando vários IFs para a variável %1, ele executa certo quando escolho a opção SP, mas quando chega no final, em vez de finalizar carrega tela para escolher o ambiente e executa novamente. -
Opções da instrução IF em arquivos BAT
CaioMarcio respondeu ao tópico de CaioMarcio em Programação - outros
Olá Ricardo, A opção do FOR funcionou legal. Tentei fazer uma adaptação dela e coloquei uns ECHOs para verificar se estava mostrando o processo correto, mas o layout que fiz deu erro logo no começo (mostrou as variáveis até o primeiro PAUSE, mostrando a tela abaixo: Etapa inicial Passagem de parametros ====================== Acao ................: Ambiente ............: Variaveis fixas ====================== chrAspas ............: " CamComponentesP .....: C:\Projetos\Prodesp - FPagto - E-Folha\3 - Especificação e Desenvolvimento\3.Fonte\Componentes\ CamComponentesE .....: C:\Projetos\Prodesp - FPagto - E-Folha\3 - Especificação e Desenvolvimento\3.Fonte\Web\DLL\ Variaveis carregadas de acordo com a acao ========================================= StatusInstrucao .....: Start_Stop_IIS_Status: DescAcao ............: Start_Stop_IIS_Codido: CodAmbiente .........: Pressione qualquer tecla para continuar. . . carregar foi inesperado neste momento. O BAT que estou fazendo é para 4 opções de ação: SI => Somente para Inicializar o IIS; CI => Carregar (registrar) algumas DLLs e Inicializar o IIS; SP => Somente para Parar o IIS; PD => Parar o IIS e descarregar (desregistrar) as mesmas DLLs. Segue o bloco que deve identificar a ação selecionada (se não passo nenhum parâmetro, mostra-se uma tela com as opções) , atribuir valores a algumas variáveis e, conforme o caso, direcionar o processo para alguma LABEL: echo Etapa inicial echo. echo Passagem de parametros echo ====================== echo Acao ................: %1 echo Ambiente ............: %2 echo. echo Variaveis fixas echo ====================== echo chrAspas ............: %chrAspas% echo CamComponentesP .....: %CamComponentesP% echo CamComponentesE .....: %CamComponentesE% echo. echo Variaveis carregadas de acordo com a acao echo ========================================= echo StatusInstrucao .....: %StatusInstrucao% echo Start_Stop_IIS_Status: %Start_Stop_IIS_Status% echo DescAcao ............: %DescAcao% echo Start_Stop_IIS_Codido: %Start_Stop_IIS_Codigo% echo CodAmbiente .........: %CodAmbiente% pause IF /I "%1" == "" ( ECHO Parametro da acao nao informado echo =============================== echo. SET echo. echo Sera aberta a janela para escolher a acao echo. echo. pause GOTO Start_Stop_IIS_Vazio ) ELSE ( SET Start_Stop_IIS_Codigo=%1 echo Parametro da acao informado echo =========================== echo. echo Passado: %1 - Variavel carregada: %Start_Stop_IIS_Codigo% echo. SET echo. echo Serao carregadas as variaveis para identificar instrucao para (des)carregar DLLs e a descricao da acao (start/stop) echo. echo. pause FOR %%a IN (CI SI) DO ( IF /I "%1" == "%%a" ( SET StatusInstrucao= SET DescAcao=Start echo Parametro da acao para inicializar o IIS escolhido echo ================================================== echo. echo O valor e o: %%a (SI: so inicia e CI: carrega DLLs e inicia) echo. SET echo. echo Se for so inicializar vai direto para a instrucao no final (ultima), caso contrario inicia e carrega DLLs echo. echo. pause ) ELSE ( SET StatusInstrucao=/u SET DescAcao=Stop echo Parametro da acao para finalizar o IIS escolhido echo ================================================ echo. echo O valor e o: %%a (SP: so finaliza e PD: descarrega DLLs e finaliza) echo. SET echo. echo Se for so finalizar vai direto para a instrucao no final (ultima), caso contrario descarrega DLLs e finaliza echo. echo. pause ) ) echo Variaveis que identificaram a acao echo ================================== echo. echo StatusInstrucao: %StatusInstrucao% echo DescAcao ......: %DescAcao% echo. pause ) FOR %%b IN (SI SP) DO ( IF /I "%1" == "%%b" ( echo A acao (%%b) e somente para %DescAcao% e ira somente executar o programa IISReset com o parametro /%DescAcao% echo. echo. GOTO AcaoUnica ) ) IF /I "%2" == "" (GOTO AmbienteVazio) ELSE (SET CodAmbiente=%2) SET Start_Stop_IIS_Status=OK Essa estrutura está com algum erro? Obrigado pela atenção adicionado 55 minutos depois Olá Ricardo, O problema era os (), a mais que coloquei nos ECHOs, aparentemente funcionou, mas deu erro em outra parte, talvez o posicionamento do último FOR. Vou fazer outras mudanças e aviso. Obrigado. -
Opções da instrução IF em arquivos BAT
CaioMarcio respondeu ao tópico de CaioMarcio em Programação - outros
A minha intenção era evitar ter que ficar reescrevendo IFs para várias condições. Se, por acaso, precisar acrescentar outros 50 valores semelhantes ao CI teria que acrescentar 50 linhas no BAT. -
Estou montando um arquivo BAT que contém uma instrução IF que, de acordo com uma condição, ela executa dois comandos. A linha, que com uma condição funciona normalmente, é a seguinte: IF /I "%1" == "CI" (SET StatusInstrucao= & SET DescAcao=Start) ELSE (SET StatusInstrucao=/u & SET DescAcao=Stop) Preciso acrescentar outras duas condições similares (mas opostas entre si) nessa instrução que são SI (parecida com a CI) e SP. Tentei a instrução abaixo para não ficar digitando várias linhas praticamente iguais: IF /I "%1" == "CI" OR "%1" == "SI" (SET StatusInstrucao= & SET DescAcao=Start) ELSE (SET StatusInstrucao=/u & SET DescAcao=Stop) Não dá erro na execução do BAT mas não são atribuídas as variáveis quando passo ao BAT a opção SI. Já coloquei as condições entre () uma a uma ou as duas juntas. O IF não aceita o OR ou AND para quando se tem mais de uma condição?
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais