第22篇 天生proto文件bat脚本

打印 上一主题 下一主题

主题 647|帖子 647|积分 1951

1.天生单个Proto.bat内容

  1. @rem Copyright 2016, Google Inc.
  2. @rem All rights reserved.
  3. @rem
  4. @rem Redistribution and use in source and binary forms, with or without
  5. @rem modification, are permitted provided that the following conditions are
  6. @rem met:
  7. @rem
  8. @rem     * Redistributions of source code must retain the above copyright
  9. @rem notice, this list of conditions and the following disclaimer.
  10. @rem     * Redistributions in binary form must reproduce the above
  11. @rem copyright notice, this list of conditions and the following disclaimer
  12. @rem in the documentation and/or other materials provided with the
  13. @rem distribution.
  14. @rem     * Neither the name of Google Inc. nor the names of its
  15. @rem contributors may be used to endorse or promote products derived from
  16. @rem this software without specific prior written permission.
  17. @rem
  18. @rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  19. @rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  20. @rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  21. @rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  22. @rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  23. @rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  24. @rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  25. @rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  26. @rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27. @rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  28. @rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. @rem Generate the C# code for .proto files
  30. setlocal
  31. @rem enter this directory
  32. cd /d %~dp0
  33. set TOOLS_PATH=tools
  34. set /p PROTO_FILE_NAME=input proto filename:
  35. %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
  36. pause
复制代码
这个脚本是一个批处理文件(.bat 文件),其作用是使用 protoc.exe 工具天生 C# 代码和 gRPC 服务代码,基于指定的 .proto 文件。以下是对脚本的逐步解释:

  • @rem 用于注释。全部以 @rem 开头的行是注释,批处理脚本不会实行它们。上面的注释内容是版权声明和允许条款。
  • setlocal
    这个下令用于将变量的作用域限定在脚本实行期间,防止脚本结束后污染外部情况中的变量
  • cd /d %~dp0
    这行下令是将当前目录切换到批处理文件地点的目录。%~dp0 表示当前批处理文件地点的驱动器和路径。
  • set TOOLS_PATH=tools
    这行下令界说了一个名为 TOOLS_PATH 的情况变量,它的值为 tools,用于后续引用 protoc.exe 和 grpc_csharp_plugin.exe 的路径。
  • set /p PROTO_FILE_NAME=input proto filename:
    set /p 下令用于在下令行提示用户输入内容。在这里,它提示用户输入 .proto 文件名,并将输入的文件名存储在 PROTO_FILE_NAME 变量中。
  • %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。

  • pause
    pause 下令用于在脚本结束时停息,等候用户按下任意键。这是为了防止下令行窗口立即关闭,以便用户检察输出结果。
总结

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

2.批量天生Protos.bat

  1. @rem Copyright 2016, Google Inc.
  2. @rem All rights reserved.
  3. @rem
  4. @rem Redistribution and use in source and binary forms, with or without
  5. @rem modification, are permitted provided that the following conditions are
  6. @rem met:
  7. @rem
  8. @rem     * Redistributions of source code must retain the above copyright
  9. @rem notice, this list of conditions and the following disclaimer.
  10. @rem     * Redistributions in binary form must reproduce the above
  11. @rem copyright notice, this list of conditions and the following disclaimer
  12. @rem in the documentation and/or other materials provided with the
  13. @rem distribution.
  14. @rem     * Neither the name of Google Inc. nor the names of its
  15. @rem contributors may be used to endorse or promote products derived from
  16. @rem this software without specific prior written permission.
  17. @rem
  18. @rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  19. @rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  20. @rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  21. @rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  22. @rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  23. @rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  24. @rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  25. @rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  26. @rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27. @rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  28. @rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. @rem Generate the C# code for .proto files
  30. setlocal
  31. @rem enter this directory
  32. cd /d %~dp0
  33. set TOOLS_PATH=tools
  34. 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
  35. pause
复制代码

  • @rem
    全部 @rem 开头的行是注释,不会被实行。这些注释内容主要是版权声明和使用允许条款,告知用户 Google 的版权信息以及对源代码和二进制文件的使用限定。
  • setlocal
    setlocal 下令用于将变量的作用域限定在脚本实行期间,防止情况变量影响脚本实行后的系统情况。
  • cd /d %~dp0
    这行下令将当前工作目录切换到批处理脚本地点的目录。%~dp0 代表当前批处理文件地点的驱动器和路径。/d 参数确保跨驱动器切换目录。
  • set TOOLS_PATH=tools
    这行下令界说了一个名为 TOOLS_PATH 的情况变量,值为 tools,表示 protoc.exe 和 grpc_csharp_plugin.exe 工具的路径。这个变量用于简化下令中的路径引用。
  • 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。

  • pause
    pause 下令用于在脚本结束时停息实行,等候用户按下任意键。这是为了防止脚本实行完后窗口立即关闭,便于用户检察实行结果。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表