批处理脚本使用 GUID 作为输入参数逐个执行作业

批处理脚本使用 GUID 作为输入参数逐个执行作业

我想创建一个批处理文件,可以使用不同的 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

但我收到以下错误

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 关闭
set /p guid=请输入 GUID:
启动/等待 Drop\Debug\Ylp.Web.CmsImportWebJob.exe /测试地图 %guid%
启动/等待 Drop\Debug\Ylp.Web.CmsImportWebJob.exe /测试比较 %guid%
启动/等待 Drop\Debug\Ylp.Web.CmsImportWebJob.exe /测试分析 %guid%
启动/等待 Drop\Debug\Ylp.Web.CmsImportWebJob.exe /测试更新 %guid%
暂停

进一步阅读

  • Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
  • 参数- 命令行参数(或参数)是传递到批处理脚本的任何值。
  • - 显示、设置或删除 CMD 环境变量。使用 SET 所做的更改将仅在当前 CMD 会话期间保留。

相关内容