Comandos CMD personalizados armazenados em um único arquivo

1

Estou tentando criar meus próprios comandos 'Make' like, onde posso executar comandos como make clean , make install , make server . Eu fiz um arquivo make.bat, onde armazenei esses comandos.

@echo off
 clean:
 rmdir node_modules
 install:
 npm install
 server:
 node index.js

Este método, obviamente, não funciona, e eu não estou querendo instalar um programa Makefile para que eu possa aprender mais maneiras de usar o CMD.

É possível criar um arquivo em lotes para fazer algo assim? Ou eu vou ter que instalar um programa Makefile?

    
por Akados 26.11.2017 / 18:59

1 resposta

0

Sim, você pode fazer isso facilmente.

Os arquivos de lote têm acesso a todos os parâmetros que são fornecidos após seu nome. Os primeiros 9 são acessíveis através de% 1,% 2,% 3,% 4 ...% 9 e você pode usar o comando shift para mudar tudo, obtendo acesso aos parâmetros 10 e mais.

Agora, no seu exemplo, apenas o primeiro parâmetro é usado, mas agora você sabe que pode usar outros parâmetros também.

O próximo passo é pular no seu arquivo de lote. Você pode usar os comandos IF e GOTO junto com :labels para fazer exatamente isso.

Uma instrução IF é assim:

IF "%1"=="clean" GOTO clean

Você pode colocar todas as suas declarações if uma na outra.

No final das instruções if, você coloca um aviso de que nenhum parâmetro válido foi inserido:

echo No parameter or an invalid parameter was used.
echo.
echo Please use make with any of the following parameters
echo    clean      - remove the nod_modules folder.
echo    install    - execute npm install.
... etc.

Depois de ter a página de ajuda trabalhada, você precisa pular para o final. A lógica Busines sugere usar um rótulo END e pular para lá, então você pode colocar um comando no final, se precisar, que funcionará em todos os lugares, como pausa.

Então você colocaria um:

goto end

Agora precisamos adicionar todas as funções.

Você começa com um marcador.

:clean

E então você adiciona seu comando

rmdir node_modules

seguido por um salto para o final do script, porque não queremos que os outros comandos também sejam executados.

Você pode até ficar mais chique e usar o segundo parâmetro para especificar qual pasta será removida. Por exemplo:

rmdir %2

Você agora executaria make clean node_modules para remover essa pasta.

goto end

Então, sua pequena função é assim:

:clean
rmdir node_modules
goto end

Depois de listar todas as funções, você obviamente terá que finalizar também:

:end

Qualquer comando opcional no final pode ser colocado depois.

    
por 26.11.2017 / 19:09