Como fazer um arquivo .bat chamar vários .bat

Segue abaixo a dica de comando para fazer um arquivo Batch(.bat) chamar outros arquivos batch.Muito útil quando queremos que um script chame vários outros.Crie um arquivo .bat novo e cole o comando abaixo alterando o nome dos arquivos.
Exemplo de comando:
call fix1.bat
call fix2.bat
call fix3.bat

No exemplo acima mandei executar os arquivos fix1.bat, fix2.bat e fix3.bat

21 comentários:

Linghston disse...

Boa dica, mas so funciona se todas as bat's estiverem no mesmo diretorio...
Mas no caso deu tiver varias bat's em sub-diretorios diferentes e a bat principal estiver em C:\gmd\texto\... Como eu faço!!!
Obrigado!!!

Dangelo disse...

Linghston, é só colocar o caminho completo de onde está o arquivo, exemplo:

call "c:\gmd\texto\teste.bat"
call "c:\gmd\texto2\teste.bat"

Se não conseguir poste as dúvidas ai.

Abraços

Linghston disse...

Dangelo, fiz como orientou mas não funcionou. Vou explicar minha situação melhor:
1) Tenho em C:\GMD\TEXTO uma bat chamada PRINCIPAL.BAT que deve chamar outras bat's.
2) Em C:\GMD\TEXTO\ALMOX tenho uma bat chamada BACK_ALMOX, e esta bat é que vai fazer o backup do arquivo ALMOX onde eu quero. Em C:\GMD\TEXTO\GEMAP tenho outra bat que vai fazer o backup do arquivo GEMAP onde eu quero, e assim por diante. Como são 12 bat's que iram fazer backup de diverentes arquivos, pensei em fazer uma BAT PRINCIPAL para chamar estas outras 12 bat's num horario pre definito em vez de agendar na Tarefas agendadas um por uma... Me economiza tempo e organização!!!
Sera que teria como???

Abraços
Linghston

Dangelo disse...

Linghston, fiz uma simulação aqui do que +- entendi que você precisa e funcionou, chamei .bat em pasta diferente e até em rede e funcionou certinho, faz o seguinte, coloca na ultima linha do teu .bat principal um pause, e depois executa para ver se dar alguma msg de erro.

Abraços

Linghston disse...

Dangelo, esqueci de comentar que dentro da bat BACK_ALMOX.bat eu executo o PKZIP para zipar o arquivo texto e depois executa uma outra linha dentro desta mesma bat, para renomear o arquivo zipado colocando data do dia e por fim outra linha que move este arquivo zipado ja com data para uma sub-pasta que fica dentro de C:\GMD\TEXTO\ALMOX\ARQ_ZIPADOS.
Oerro esta justamente no PKZIP, ele não esta sendo executado!!!!
Abaixo o comando que estou usando nesta bat.:
cls
echo off
echo ====================================
echo : ZIPAR ARQUIVO ALMOX
echo ====================================
PKZIP C:\GMDN\TEXTO\ALMOX\ALMOX ALMOX.TXT
for /F "tokens=1-3 delims=/" %%A in ('echo %date%') do rename ALMOX.ZIP SDALMOX%%A%%B%%C.ZIP
move /Y C:\GMDN\TEXTO\ALMOX\*.ZIP C:\GMDN\TEXTO\ALMOX\ARQ_ZIPADOS
CLS
net use
cls
EXIT

Abraços!!!

Dangelo disse...

Linghston, então o problema não está no comando CALL... certo?

Se o problema e só neste batch com o pkzip não posso te ajudar, pois não tenho muita experiência com ele.

Qualquer outra coisa que puder ajudar estou a disposição.

Abraços.

Rodrigo disse...

olha só galera, eu to com um probleminha na bat, q eu boto pra chamar outras 3 bats...ele chama as 2 primeiras na boa mais quando ele vai puxar a terceira ele diz que o arquivo nao eh .bat
isso eh um erro comum ?
tem alguma coisa q vcs possam me dar uma luz ?

Dangelo disse...

Posta aqui o conteúdo do bat principal.
Deve ser algum erro ai, verique se não é apenas erro de digitação.

Rodrigo disse...

olha só cara, acho dificil ser erro de digitação pos ela como uma bat normal esta funcionando, o problema eh quando vou dividi-la em outras, vo postar aqui ela:

Rodrigo disse...

esta é a ultima a ser chamada, a qual esta dando o erro

IF EXIST c:\lci\VerUser10.exe goto EXisteVeruser
rem IF EXIST c:\lci\VerUser172.exe goto EXisteVeruser
IF NOT EXIST c:\lci\VerUser10.exe goto NaoEXisteVeruser
rem IF NOT EXIST c:\lci\VerUser172.exe goto NaoEXisteVeruser

:NaoEXisteVeruser

TYPE c:\lci\temp.txt | FIND /I "10.0."

IF NOT ERRORLEVEL 1 (

net use m: \\10.0.0.103\acesso
cd\
cd lci
del *.* /q
copy l:\VerUser10.exe /y
copy l:\libmysql.dll /y
net use l: /delete
goto FimBat
)

IF ERRORLEVEL 1 (

net use l: \\172.50.0.22\acesso
cd\
cd lci
del *.* /q
copy l:\VerUser172.exe /y
copy l:\libmysql.dll /y
net use l: /delete
goto FimBat
)

:EXisteVeruser

del temp.txt /q

net use l: /delete

:FimBat

ipconfig >> c:\lci\temp.txt
TYPE c:\lci\temp.txt | FIND /I "10.0."

IF NOT ERRORLEVEL 1 (

del c:\lci\temp.txt /s /q
c:\lci\VerUser10 %curso%

)

IF ERRORLEVEL 1 (

del c:\lci\temp.txt /s /q
c:\lci\VerUser172 %curso%

)

Dangelo disse...

Rodrigo este post é relacionado ao comando "call", pelo que você escreveu dava a entender que o problema era relacionado a ele.Mesmo assim olhei seu script e não achei algo que possa te ajudar.
Falows

Rodrigo disse...

o problema esta, quando eu mando dar call nesta função, ele diz que isto não é um arquivo bat

Dangelo disse...

Rodrigo, o call só chama o .bat salvo não chama a função.Salve este script em um bat e faça outro bat com o call chamando os outros bats.Se mesmo assim tiver problema o problema esta neste script.

Abraço.

Dangelo

Leandro disse...

Bom dia!

Valeu pela dica, funcionou certinho.

Anônimo disse...

é possível um .bat chamar arquivos com outras extensões?

Dangelo disse...

Sim, so colocar o caminho e extensão do arquivo completo.
.exe , .vbs , .bat e por ai vai.

Anônimo disse...

Olá amigos. Preciso de uma ajuda para fazer um .bat. Agradeço muito a quem puder ajudar: Quero rodar um joguinho.exe e ao mesmo tempo rodar uma música.wav. Isso para rodar num CD. Então fiz o autorum.inf = open=arquivo.bat //// e o arquivo.bat=start jogo.exe e start música.wav //// Funcionou direitinho, mas o meu problema é que a música toca apenas uma vez. Queria colocar a música em loop, para tocar o tempo todo que o jogo estivesse aberto. Se alguém souber como fazer ou outra solução. Aguardo e agradeço desde já.

helainycarvalho disse...

ola
gostaria um criar um executavel arquivo.bat para que o meu not inicie e execute a função das teclas fn + f4 para liguar a rede porque meu not esta com as teclas quebradas

Anônimo disse...

Bem bacana a dica, um comando tão simples que muda um conceito geral sobre algumas coisas :)

Anônimo disse...

Bom dia,

Estou tentando rodar um outro bat que está em outra máquina em rede, porém retorna uma mensagem de usuário e senha incorretos.

Formas tentadas:

- call -u "user" -p "pass" -d "\\ip adress\C:\Users\administ
rator.SSAT\Desktop\Close GSlog Updater.bat"

- psexec -u "user" -p "pass" -d "\\ip adress\C:\Users\administ
rator.SSAT\Desktop\Close GSlog Updater.bat"

- call "\\10.0.0.2\C:\Users\administrator.SSAT\Desktop\Close GSlog Updater.bat"

Muito obrigado desde já e parabéns pelo post.

Dangelo disse...

Anônimo, talvez para tentar de ajudar de forma mais rápida. Estou um tempinho sem usar o psexec e sem uma máquina windows para testar. Mais eu sempre executava um script que estava localmente na máquina remota. Exemplo abaixo:
psexec \\computername -c teste.bat

No prompt, para executar o comando acima você tem que estar dentro da pasta onde esta o teste.bat
Para talvez não precisar especificar o usuário. Mapeia a unidade \\computername\c$ antes, ai creio que rode o script sem solicitar usuário. Aqui eu sempre executava com usuário administrador do domínio e não tinha problema. Na dúvida digita no prompt psexec /?
Se mesmo assim não consegui avisa que tento simular a tua situação.