我需要得到SVN在Windows犯post-commit鉤子蝙蝠消息,所以我這樣做:如何在窗口蝙蝠中獲取完整的svn提交信息?
FOR /F "tokens=*" %%a in ('"svnlook log %1 -r %2"') do @SET MSG=%%a
我測試了一下,它的確定對於大多數情況下。
但是,當我在SVN提交信息中輸入多行時,該命令只能得到提交信息的最後一行,我認爲這是由於windows批處理文件的限制造成的。
如何將整個提交消息傳遞給bat變量?
我需要得到SVN在Windows犯post-commit鉤子蝙蝠消息,所以我這樣做:如何在窗口蝙蝠中獲取完整的svn提交信息?
FOR /F "tokens=*" %%a in ('"svnlook log %1 -r %2"') do @SET MSG=%%a
我測試了一下,它的確定對於大多數情況下。
但是,當我在SVN提交信息中輸入多行時,該命令只能得到提交信息的最後一行,我認爲這是由於windows批處理文件的限制造成的。
如何將整個提交消息傳遞給bat變量?
FOR /F
根據輸入中的行進行操作。嘗試將@SET MSG=%%a
更改爲@SET MSG=!MSG! %%a
。
根據提交消息的類型或格式,最好也保留換行符;這可以使用這個來完成:
set newline=^
setlocal ENABLEDELAYEDEXPANSION
需要注意的是空線都需要換行,所以是ENABLEDELAYEDEXPANSION
(一次使用!newline!
之前的任何地方)。現在
你可以用它來連接具有一個換行符消息(跳過空行,順便說一句),然後修剪第一個換行符:
FOR /F "tokens=*" %%a in ('"svnlook log %1 -r %2"') do @SET MSG=!MSG!!newline!%%a
@SET MSG=!MSG:~1!
不要忘了'SETLOCAL enabledelayedexpansion',然後。 – Joey 2009-10-09 19:41:05
謝謝,setlocal enabledelayedexpansion是關鍵〜 – zhongshu 2009-10-10 04:18:24