首页 > 其他分享 >第22篇 生成proto文件bat脚本

第22篇 生成proto文件bat脚本

时间:2024-09-13 16:24:57浏览次数:11  
标签:bat exe 22 proto grpc code protoc rem

1.生成单个Proto.bat内容

image

@rem Copyright 2016, Google Inc.
@rem All rights reserved.
@rem
@rem Redistribution and use in source and binary forms, with or without
@rem modification, are permitted provided that the following conditions are
@rem met:
@rem
@rem     * Redistributions of source code must retain the above copyright
@rem notice, this list of conditions and the following disclaimer.
@rem     * Redistributions in binary form must reproduce the above
@rem copyright notice, this list of conditions and the following disclaimer
@rem in the documentation and/or other materials provided with the
@rem distribution.
@rem     * Neither the name of Google Inc. nor the names of its
@rem contributors may be used to endorse or promote products derived from
@rem this software without specific prior written permission.
@rem
@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

@rem Generate the C# code for .proto files

setlocal

@rem enter this directory
cd /d %~dp0

set TOOLS_PATH=tools

set /p PROTO_FILE_NAME=input proto filename:

%TOOLS_PATH%\protoc.exe -I./protos --csharp_out ./code --grpc_out ./code ./protos/%PROTO_FILE_NAME%.proto --plugin=protoc-gen-grpc=%TOOLS_PATH%\grpc_csharp_plugin.exe

pause

这个脚本是一个批处理文件(.bat 文件),其作用是使用 protoc.exe 工具生成 C# 代码和 gRPC 服务代码,基于指定的 .proto 文件。以下是对脚本的逐步解释:

  1. @rem 用于注释。所有以 @rem 开头的行是注释,批处理脚本不会执行它们。上面的注释内容是版权声明和许可条款。

  2. setlocal
    这个命令用于将变量的作用域限制在脚本执行期间,防止脚本结束后污染外部环境中的变量

  3. cd /d %~dp0
    这行命令是将当前目录切换到批处理文件所在的目录。%~dp0 表示当前批处理文件所在的驱动器和路径。

  4. set TOOLS_PATH=tools
    这行命令定义了一个名为 TOOLS_PATH 的环境变量,它的值为 tools,用于后续引用 protoc.exe 和 grpc_csharp_plugin.exe 的路径。

  5. set /p PROTO_FILE_NAME=input proto filename:
    set /p 命令用于在命令行提示用户输入内容。在这里,它提示用户输入 .proto 文件名,并将输入的文件名存储在 PROTO_FILE_NAME 变量中。

  6. %TOOLS_PATH%\protoc.exe -I./protos --csharp_out ./code --grpc_out ./code ./protos/%PROTO_FILE_NAME%.proto --plugin=protoc-gen-grpc=%TOOLS_PATH%\grpc_csharp_plugin.exe

    这是批处理文件的核心命令,它调用 protoc.exe,用于根据用户输入的 .proto 文件生成相应的 C# 和 gRPC 代码。以下是参数的详细解释:

  • %TOOLS_PATH%\protoc.exe: 调用 protoc.exe,用于编译 .proto 文件。
  • -I./protos: 指定 protoc.exe 的输入目录,这里是 ./protos 目录,存放 .proto 文件。
  • --csharp_out ./code: 生成 C# 代码,并将代码输出到 ./code 目录。
  • --grpc_out ./code: 生成 gRPC 服务代码,并将代码输出到 ./code 目录。
  • ./protos/%PROTO_FILE_NAME%.proto: 指定要编译的 .proto 文件,文件名由用户输入,存储在 PROTO_FILE_NAME 变量中。
  • --plugin=protoc-gen-grpc=%TOOLS_PATH%\grpc_csharp_plugin.exe: 指定用于 gRPC 代码生成的插件,路径为 tools 目录中的 grpc_csharp_plugin.exe。
  1. pause
    pause 命令用于在脚本结束时暂停,等待用户按下任意键。这是为了防止命令行窗口立即关闭,以便用户查看输出结果。

总结

这个批处理脚本的作用是:当用户输入 .proto 文件名后,使用 protoc.exe 和 gRPC 插件生成相应的 C# 和 gRPC 代码,并将它们保存到 ./code 目录下。

=================================================================================================

2.批量生成Protos.bat

image

@rem Copyright 2016, Google Inc.
@rem All rights reserved.
@rem
@rem Redistribution and use in source and binary forms, with or without
@rem modification, are permitted provided that the following conditions are
@rem met:
@rem
@rem     * Redistributions of source code must retain the above copyright
@rem notice, this list of conditions and the following disclaimer.
@rem     * Redistributions in binary form must reproduce the above
@rem copyright notice, this list of conditions and the following disclaimer
@rem in the documentation and/or other materials provided with the
@rem distribution.
@rem     * Neither the name of Google Inc. nor the names of its
@rem contributors may be used to endorse or promote products derived from
@rem this software without specific prior written permission.
@rem
@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

@rem Generate the C# code for .proto files

setlocal

@rem enter this directory
cd /d %~dp0

set TOOLS_PATH=tools

for %%a in (protos/*.proto) do %TOOLS_PATH%\protoc.exe -I./protos --csharp_out ./code --grpc_out ./code ./protos/%%a --plugin=protoc-gen-grpc=%TOOLS_PATH%\grpc_csharp_plugin.exe

pause
  1. @rem
    所有 @rem 开头的行是注释,不会被执行。这些注释内容主要是版权声明和使用许可条款,告知用户 Google 的版权信息以及对源代码和二进制文件的使用限制。

  2. setlocal
    setlocal 命令用于将变量的作用域限制在脚本执行期间,防止环境变量影响脚本执行后的系统环境。

  3. cd /d %~dp0
    这行命令将当前工作目录切换到批处理脚本所在的目录。%~dp0 代表当前批处理文件所在的驱动器和路径。/d 参数确保跨驱动器切换目录。

  4. set TOOLS_PATH=tools
    这行命令定义了一个名为 TOOLS_PATH 的环境变量,值为 tools,表示 protoc.exe 和 grpc_csharp_plugin.exe 工具的路径。这个变量用于简化命令中的路径引用。

  5. for %%a in (protos/*.proto) do %TOOLS_PATH%\protoc.exe -I./protos --csharp_out ./code --grpc_out ./code ./protos/%%a --plugin=protoc-gen-grpc=%TOOLS_PATH%\grpc_csharp_plugin.exe
    这段代码是脚本的核心,使用 for 循环批量处理 protos 目录中的所有 .proto 文件。以下是逐步说明:

  • for %%a in (protos/*.proto): 这个 for 循环会遍历 protos 目录中的所有 .proto 文件,每个文件路径保存在 %%a 中。
  • do %TOOLS_PATH%\protoc.exe: 调用 protoc.exe 工具来编译 .proto 文件。
  • -I./protos: 指定 protoc.exe 的输入目录是 protos 文件夹。
  • --csharp_out ./code: 将生成的 C# 代码输出到 code 目录。
  • --grpc_out ./code: 将生成的 gRPC 服务代码输出到 code 目录。
  • ./protos/%%a: 指定要编译的 .proto 文件,文件名由 for 循环提供,即当前迭代的 %%a 变量。
  • --plugin=protoc-gen-grpc=%TOOLS_PATH%\grpc_csharp_plugin.exe: 使用 gRPC 插件生成 gRPC 代码,插件路径为 tools/grpc_csharp_plugin.exe。
  1. pause
    pause 命令用于在脚本结束时暂停执行,等待用户按下任意键。这是为了防止脚本执行完后窗口立即关闭,便于用户查看执行结果。

标签:bat,exe,22,proto,grpc,code,protoc,rem
From: https://www.cnblogs.com/chenshibao/p/18412358

相关文章

  • 洛谷P8208 [THUPC2022 初赛] 骰子旅行 题解 期望DP
    题目链接:https://www.luogu.com.cn/problem/P8208解题思路:定义\(d_u\)表示节点\(u\)的出度,定义\(V_u\)表示节点\(u\)一步能够走到的节点的集合。定义状态\(p_{u,c,v}\)表示从节点\(u\)出发走恰好\(c\)步的情况下,至少经过一次节点\(v\)的概率。则:若\(v=......
  • MyBatis 3种 使用 SQL 语句的方式;注解方式、注解提供器方式、XML 配置方式
    结论:为了统一使用方式,建议采用XML配置的方式;MyBatis提供了多种配置和使用SQL语句的方式,主要包括:注解方式(如@Select)、注解提供器方式(如@SelectProvider)和XML配置方式。每种方式都有其独特的优缺点,适用于不同的场景。以下是这三种方式的详细对比:1.@Select这类注解优点:......
  • 22319 Business Analysis (Capstone)
    22319 BusinessAnalysis(Capstone)Spring2024SubjectdescriptionTheaimofthissubject istodemonstrateand apply a framework for business analysis and valuation using both    financialandnon-financialdata.Theemphasisofthesubject......
  • P2201 数列编辑器(对顶栈)
    include<bits/stdc++.h>usingnamespacestd;definexfirstdefineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefunsignedintuint;typedefvectorVS;typedefvectorVI;typedefvector<vect......
  • 10 Windows批处理之调用例程和bat文件
    在前文中,我介绍了标签和非顺序执行,这两者在本文中也起着重要作用。我将很快介绍一个已经讨论过的命令的新变化,允许您创建和调用由标签定义的例程。不是简单地在标签之后将控制权交给代码,而是在例程执行后将控制权返回到调用它的位置。在编写更复杂、更有趣的bat文件时,您需要完全理......
  • 10 Windows批处理之调用例程和bat文件
    在前文中,我介绍了标签和非顺序执行,这两者在本文中也起着重要作用。我将很快介绍一个已经讨论过的命令的新变化,允许您创建和调用由标签定义的例程。不是简单地在标签之后将控制权交给代码,而是在例程执行后将控制权返回到调用它的位置。在编写更复杂、更有趣的bat文件时,您需要完全理......
  • 先去官网下载,我这里下载的是最新版本的2024.2,测试过2024最新版本以及2022版本以上的版
    先去官网下载,我这里下载的是最新版本的2024.2,测试过2024最新版本以及2022版本以上的版本没问题。 激活工具 激活码X9MQ8M5LBM-eyJsaWNlbnNlSWQiOiJYOU1ROE01TEJNIiwibGljZW5zZWVOYW1lIjoiZ3VyZ2xlcyB0dW1ibGVzIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2V......
  • mybatis exists 中使用代替in关键字
      使用场景,in适合数据量小的时候,exists适合数据量大的时候。<iftest="torqueRecordPageDTO.vinList!=nullandtorqueRecordPageDTO.vinList.size>0">andexists(select1from(<foreachcollection="......
  • mybatis in中超过1000个值解决办法(超简单)
    众所周知sql中条件in的值是不能超过1000个的,而mybatis可以使用动态sql拼接的方式绕开这个限制,网上看了很多例子,我感觉都不太好理解,下面介绍一个超简单的例子。select*fromuser_infowhere1=1<iftest="userList!=nullanduserList.size()>0">and(userIdin<f......
  • 金百达F6Pro带缓存sm2256K开卡成功 附工具 AD, 3A, 18, A3, 61, 25 ,H27UDG8M2M
     开卡工具 SM2256AB_MPO0811A_FWO0803A_SLCFirst.zip      SM2256AB_MPO0811A_FWO0803A_SLCFirst.zip ......