Por que o uso de “cmd” em .bat resolve corretamente?

Por que o uso de “cmd” em .bat resolve corretamente?

Ao procurar o método correto para executar um script .bat e manter a cmdjanela ativa após a conclusão, aprendi que um dos dois métodos populares é incluir cmd /k file.batno script, onde "file.bat" se refere a si mesmo.

Embora eu entenda o resultado funcional do acima, o que não consigo entender é como - conceitualmente - ele é executado e resolvido corretamente?

Pela minha própria inferência sem instrução, acho que tem algo a ver com o /kargumento, cuja função é explicada como:

Executa o comando especificado por string, mas permanece

Ainda assim, mesmo que permita que o script evite o loop, como ele não interrompe sua própria execução?

Peço desculpas se isso é muito óbvio ou se estou entendendo mal algo fundamental, não tenho educação ou treinamento formal sobre o assunto.

EDITAR:

Bem, isso foi bobagem da minha parte! eu vi na respostaaquique a sintaxe foi organizada da maneira que indiquei acima...quefazfaça um loop no script, então eu deveria ter testado por mim mesmo antes de acreditar cegamente sem o contexto adequado (e estou sempre dizendo "confie, mas verifique", também, que hipócrita

Responder1

No que diz respeito ao porquê cmdresolve, há algumas boas explicações emEstouro de pilha- essencialmente cmdé interpretado como %ComSpec%, que é a variável de ambiente do seu sistema para a localização completa do cmd.exe (geralmente C:\Windows\System32\cmd.exe).

No que diz respeito ao contexto da sua pergunta - se você tiver cmd /k yourbatfile.batdentro do yourbatfile.bat, ele simplesmente entrará em loop. Se você deseja que sua janela permaneça aberta por motivos de solução de problemas, recomendo enfaticamente apenas colocar um pauseno final dela/depois de qualquer seção com a qual você esteja tendo problemas.

A redação para /kéum pouco diferente aquijá que diz que "retorna ao prompt de comando" - essencialmente, adicionar /ké como abrir cmd.exe e usá-lo, enquanto não /ké como executar um comando em uma janela Executar.

Você pode testar isso abrindo Executar e executando ipconfig /all- sua janela será fechada imediatamente após ipconfigterminar; mas se você abrir Executar e executar cmd /k ipconfig /all- sua janela o levará de volta a um prompt de comando.

informação relacionada