最近尝试使用Java代码代码打开TortoiseSVN版本库浏览器,这样就可以通过web页面点击打开指定路径的SVN版本库目录,最后找到了一个实现方案。
正常操作TortoiseSVN打开版本库的步骤如图所示,我们需要通过程序代码实现这个过程
正常 image.png1、TortoiseSVN有提供命令行操作方式,通过如下命令可以打开TortoiseSVN的URL路径输入界面
TortoiseProc.exe /command:repobrowser
2、既然可以打开版本库浏览器的输入URL界面,接下来自然就是填充SVN路径并且点击确认,然后就可以打开版本库目录界面了。
实现这个功能可以先在Java中将SVN路径复制到剪切板,其代码如下:
/**
* <pre>
* 将内容复制到粘贴板
* </pre>
* @author 北北
* @date 2019年6月21日上午10:01:12
* @param content
*/
public static void copyToClipboard(String content) {
//获取系统剪切板
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
//构建String数据类型
StringSelection selection = new StringSelection(content);
//添加文本到系统剪切板
clipboard.setContents(selection, null);
}
然后通过VBS脚本执行打开路径的命令(也就是第1步的打开SVN路径输入界面的命令),我们知道打开这个界面后,会自动把粘贴板中的SVN路径粘贴到SVN路径输入框中,最后一步就是点击一下确认键就可以了。
这两个步骤都可以通过VBS脚本来实现,脚本代码如下:
#VBS脚本filePath:D:/.../openSvnRepoBrowser.vbs, 内容如下:
Set objShell = CreateObject("Wscript.Shell")
With objShell
.Run "TortoiseProc.exe /command:repobrowser" //此处执行CMD命令行
WScript.Sleep 1000
.SendKeys "{ENTER}" //此处发送回车键
.SendKeys "~"
End With
Set objShell = Nothing
然后通过如下Java代码调用上述openSvnRepoBrowser.vbs脚本,即可实现目标功能
/**
* <pre>
* 打开文件/文件夹桌面会话
* </pre>
* @author 北北
* @date 2019年1月10日上午11:48:36
*/
public static String openFileDesktop(String filePath) {
//解决Tomcat内启动无法打开指定程序问题
System.setProperty("java.awt.headless", "false");
if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.OPEN)) {
File file = new File(filePath);
if (file.exists()) {
try {
Desktop.getDesktop().open(file);
return "";
} catch (Exception e) {
logger.error("打开文件或文件夹失败:" + filePath, e);
return "打开文件或文件夹失败:" + filePath + "<br>异常信息:" + e.getMessage();
}
} else {
return "文件或文件夹不存在:" + filePath;
}
}
return "不支持打开!";
}
3、需要注意的是:我分别尝试了1.8.3、1.11.0、1.12.0三个版本的TortoiseSVN,最后只有1.11.0版本可以实现上述功能。
image.png这里提供TortoiseSVN-1.11.0的下载链接:TortoiseSVN-1.11.0
参考文章:命令行使用TortoiseSVN
网友评论