通过Windows批处理从svn​​look获取日志消息

我尝试为我的svn存储库准备一个post-commit钩子.因此,我需要使用命令svnlook log -r%REV %% REPOS%从上次提交的日志消息.使用适当的参数填充代码段我得到以下多行日志消息:
This
is
my
transaction.

到目前为止这很好用.现在我把它放在一个.bat文件中:

@ECHO OFF

REM just for testing purpose...
SET REPOS=C:\repo
SET REV=40

FOR /F %%i in ('svnlook log -r %REV% %REPOS%') do SET VAR=%%i

ECHO %VAR%

当我执行脚本时只有最后一行事务.是的回应. for循环是我认为的一个片段,它会将svnlook输出读入%var%.

我的方法是在一个变量中获取日志消息,我将其作为参数传递给另一个exe文件.但它不会起作用.我不知道如何正确使用循环.

日志消息应该作为参数提供给另一个exe文件.

我将脚本修改为以下内容(@thx PA.)

@ECHO OFF
setlocal enabledelayedexpansion

SET REPOS=C:\repo
SET REV=40

SET MSG=
FOR /F %%i in ('svnlook log -r %REV% %REPOS%') do SET VAR=!VAR! %%i
ECHO !VAR!

输出现在是这是我的交易.但是线路已经消失,但我需要进一步处理.

如果您还想要换行符,可以在连接行时添加它们.
@ECHO OFF
setlocal enabledelayedexpansion
set LF=^


rem ** The two empty lines are NECESSARY

SET REPOS=C:\Users\CH.ROSESOFT\Downloads\t3\repo
SET REV=40

SET MSG=
FOR /F %%i in ('svnlook log -r %REV% %REPOS%') do (
    SET "VAR=!VAR!!LF!%%i"
    SET "PAR=!PAR!^^!LF!!LF!%%i"
)
ECHO !VAR!
myProgram.exe !par!

相关文章

(1)when you ping a computer from itsafe,the ping command should return the local IP address. (...
1、点击win菜单,点击设置图标 2、选择系统选项 3、选择应用与程序选项 4、拉到最下方,选择程序与功能...
目前一直直接往Windows 2008 R2 Server中复制文件(暂时还没有搭建ftp服务),突然不能复制了,于是百度...
windows下使用vscode配合xebug调试php脚本 要下载有php_xebug.dll扩展的版本,最新版可能没有这个扩展,p...
在控制面板的程序与功能里启用和关闭windows功能打开,适用于linux的windows子系统
效果演示 推荐一个非常牛的文档网站生成器:docsify 我通过这个工具,成功将码云上的个人学习笔记发布到...