Script em lote para executar trabalhos um após o outro usando um GUID como um argumento de entrada

1

Eu gostaria de criar um arquivo de lote que eu possa reutilizar com diferentes parâmetros de entrada GUID.

Normalmente, executo um arquivo quatro vezes, um após o outro, com vários parâmetros de entrada, como:

D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test map 353c8be4-d3ca-4c92-96ee-ea1
4933f54fa
D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test compare 353c8be4-d3ca-4c92-96ee-ea1
4933f54fa
D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test analyse 353c8be4-d3ca-4c92-96ee-ea1
4933f54fa
D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test update 353c8be4-d3ca-4c92-96ee-ea1
4933f54fa

Gostaria de poder transmitir o GUID, pois essa é a única parte que varia para diferentes tarefas

O que se segue é o seguinte, mas obtenho os seguintes erros:

C:\Users\f\Desktop>echo off
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
Press any key to continue . . .

script real:

echo off
set arg1=%1
shift
start /wait D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test map arg1=%1
start /wait D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test compare arg1=%1
start /wait D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test analyse arg1=%1
start /wait D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test update arg1=%1

pause
    
por Xerxes 20.08.2015 / 12:58

1 resposta

4

Mas recebo os seguintes erros

echo off
set arg1=%1
shift
start /wait D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test map arg1=%1
start /wait D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test compare arg1=%1
start /wait D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test analyse arg1=%1
start /wait D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test update arg1=%1
pause

Seu script tem muitos erros:

  • set arg1=%1

    arg1 é definido e nunca mais usado.

  • shift

    Por que você está mudando? Não há necessidade de.

  • start /wait D:\>Drop\Debug\Ylp.Web.CmsImportWebJob.exe

    D:\> é o seu prompt de comando e não faz parte do comando

  • arg1=%1

    Por que você está fazendo isso? O que você acha que conseguirá?

Solução

Tente o seguinte arquivo de lote (doit.cmd):

@echo off
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test map %1
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test compare %1
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test analyse %1
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test update %1
pause

Chame da seguinte forma:

doit 353c8be4-d3ca-4c92-96ee-ea14933f54fa

Existe alguma maneira que eu possa clicar no arquivo bat e ter permissão para entrar na entrada?

Use set /p

  • A opção /p permite que você defina uma variável igual a uma linha de entrada inserida pelo usuário.

    A sequência Prompt é exibida antes da entrada do usuário ser lida.

@echo off
set /p guid=Please enter GUID:
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test map %guid%
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test compare %guid%
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test analyse %guid%
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test update %guid%
pause

Leitura Adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • parâmetros - Um argumento de linha de comando (ou parâmetro) é qualquer valor passado para um script em lote.
  • definir - Exibir, definir ou remover variáveis de ambiente do CMD. As alterações feitas com o SET permanecerão apenas pela duração da sessão atual do CMD.
por 20.08.2015 / 13:33