我尝试为我的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文件.
@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!