1

Я хотел бы создать командный файл, который я могу использовать с разными входными параметрами GUID.

Обычно я выполняю файл 4 раза, один за другим с различными входными параметрами, например так:

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

Я хотел бы иметь возможность передать в GUID, так как это единственная часть, которая варьируется для разных заданий

Вот то, что я придумал, но я получаю следующие ошибки:

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 . . .

фактический скрипт:

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

1 ответ1

4

Но я получаю следующие ошибки

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

В вашем скрипте много ошибок:

  • set arg1=%1

    arg1 установлен и никогда не используется снова.

  • shift

    Почему ты меняешься? Там нет необходимости.

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

    D:\> - это ваша командная строка, а не часть команды

  • arg1=%1

    Почему вы это делаете? Как вы думаете, чего он достигнет?


Решение

Попробуйте следующий командный файл (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

Назовите это следующим образом:

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

Могу ли я в любом случае нажать на файл bat и получить возможность просто ввести данные?

Используйте set /p

  • Переключатель /p позволяет установить переменную, равную строке ввода, введенной пользователем.

    Строка подсказки отображается перед прочтением ввода пользователя.

@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

Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • параметры - аргумент командной строки (или параметр) - это любое значение, переданное в пакетный скрипт.
  • set - отображать, устанавливать или удалять переменные окружения CMD. Изменения, сделанные с помощью SET, будут сохраняться только в течение текущего сеанса CMD.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .