batch-file - 在 SVN 预提交挂钩中提取多行提交日志
问题描述
我试图在 pre commithook 中获得完整的提交评论。以下是我的代码,
set REPOS=%1
set TXN=%2
SET comment
FOR /F "tokens=*" %%g IN ('svnlook log %REPOS% -t %TXN%') do (SET comment=%comment%%%g)
但我只能得到日志的最后一行。有什么办法可以获得完整的日志(多行)?
解决方案
您本质上存在延迟扩展问题。这是批处理文件在执行代码行之前如何扩展变量的那些古怪的事情之一。因此,您有两种选择来解决此问题。
启用延迟扩展并使用感叹号来引用您的变量。
setlocal enabledelayedexpansion
FOR /F "tokens=*" %%g IN ('svnlook log %REPOS% -t %TXN%') do (SET comment=!comment!%%g)
对命令使用一点技巧CALL
。您将百分比符号加倍并使用 CALL 命令,该命令为您提供两个变量扩展阶段。
FOR /F "tokens=*" %%g IN ('svnlook log %REPOS% -t %TXN%') do (CALL SET comment=%%comment%%%%g)
推荐阅读
- rust - 如何将多个调用链接到“into()”?
- python - 如何在熊猫索引器中获取 True 条目的整数位置
- html - 为什么我的 CSS 文件没有链接到我的 HTML 文件?
- c++ - 生成与 C++ 库的 Rust ffi 绑定
- python - 使用 jira-python 获取 JIRA 中问题的整个变更日志
- python - 在两个 x、y、z 点之间线性插值高程
- python - 如何使用python在Elasticsearch中修改后将索引内的内容复制到另一个
- javascript - TypeScript - Function return type based on multiple parameters
- r - Change color bar title in plotly in R
- c++ - CMake 问题 - 找不到“OpenCV”提供的包配置文件