Estou trabalhando no Windows 10.
Este é o meu código salvo no arquivo .bat:
%windir%\System32\cmd.exe "/K" C:\Users\Alex\AppData\Local\Continuum\anaconda3\Scripts\activate.bat C:\Users\Alex\AppData\Local\Continuum\anaconda3
"c:\Arch\Upload from DB to Redcap.py"
Se eu abrir o prompt de comando (cmd) manualmente e executar cada linha, tudo funcionará bem. Mas se eu executar o arquivo .bat com o conteúdo acima, a primeira linha será executada corretamente, mas a segunda linha apenas mudará a pasta atual para a c:\Arch\
pasta e Upload from DB to Redcap.py
o arquivo não será executado. Como corrigir meu código para que a segunda linha do Upload from DB to Redcap.py
arquivo de execução do meu código esteja localizada em c:\Arch\Upload from DB to Redcap.py
?
Se python.exe estiver em seu
PATH
, você pode tentar precederpython.exe
a linha ofensiva:Outra opção é usar o
start
comando:/b
dizstart
para não abrir uma novacmd
janela e""
é para evitar que ela seja interpretada"c:\Arch\Upload from DB to Redcap.py"
como um título.cmd /keep vs cmd /continue
Se você estiver usando
/k
e não precisar de aspas, até digitarexit
o comando, o próximo comando nobat/cmd
nunca será executado.Você iniciou um "intérprete" e não saiu/sai/fechou, só depois disso que seu próximo comando será executado...
cmd /keep
Quando você usa o terminal abrindo um novo interpretador digitando 'cmd /k', funciona porque você está interagindo diretamente com ele, neste caso no bat, linha online que funciona é:
cmd /k "...\enable.bat"
, o arquivo bat no comando também é executado porque é na mesma linha.No bastão,
cmd / k somefile.bat [or] some command
ele iniciará um novo interpretador e o manterá aberto para entrada até o momento em que você digitar sair ou fechar a janela cmd atual. Caso contrário, ele ficará esperando que você insira um ou mais comandos para executá-los e, no código, a próxima execução é na próxima linha: ("C:\Arch\Upload from DB to Redcap.py"), nunca será executado, a menos que você o digite para este interpretador atual ou digiteexit
para sair e retornar ao interpretador anterior, execute o próximo comando de linha.Tente substituir por e seu interpretador irá executar seu código linha por linha...
cmd /c
Mas acho que nem é uma
cmd
chamada rodando o arquivobat/cmd
.O interpretador de comandos (
cmd.exe
) irá executar o seubat
/cmd
apenas executando ou, ao clicar nele, não há necessidade de adicionar uma instrução específica para executar o seubat
script.Salve este código abaixo como file.bat e tente:
Além disso, se você estiver usando um
bat
arquivo para executar outrobat
arquivo, usecall c:\file.bat
...[√] cmd
[√] cmd /MS Docs
[√] Como executar vários arquivos bat dentro de um arquivo bat