Resposta 1: Nenhuma, porque o batch do Windows nem mesmo tem funções como o bash faz. Ele só tem sub-rotinas que usam uma sintaxe diferente dos comandos normais - ping
vs call :ping
- não há necessidade de substituição.
Se você ler a documentação mais de perto, command
apenas ignora aliases e funções, mas não faz nada sobre scripts em $ PATH. Em ambos os shells , se você substituir usando um arquivo de script real, cabe a você encontrar o comando "real".
Resposta 2: Para evitar o loop que você descreveu, você precisará especificar o nome completo de "ping".
-
Com o bash, isso significaria chamar
/bin/ping
ou talvez fazer um loop por $ PATH até que você o encontre. -
No Windows, as mesmas opções existem; no entanto, como seu script é chamado de
ping.bat
ouping.cmd
, você pode executarping.exe
para evitar o loop.