1

我正在使用一个名为 redmine checkout 的 redmine 插件,它使我们可以选择在 redmine 的 svn 存储库中查看代码。现在我需要添加一个按钮,该按钮将检查该特定项目中的所有代码并将其下载到我的本地计算机。

所以我创建了一个批处理文件,它是这样的:

@echo off
echo.
echo. [ SVN Updater ]

set SVNURL=%1
set SOURCE=C:\Users\
set SVN=C:\Program Files\TortoiseSVN\bin
echo.
echo. Updating %SOURCE% to SVN...
"%SVN%\TortoiseProc.exe" /command:checkout /path:"%SOURCE%" /url:%SVNURL% /closeonend:2 
echo. done.
echo.
echo. Operation complete.

此批处理文件将代码签出到我的本地计算机。现在,我需要在我的 redmine 应用程序中运行这个批处理文件。你能告诉我在哪里以及如何运行这个批处理文件吗?我是新手。

非常感谢您提前。

4

2 回答 2

3

system您可以使用, exec, ``` (反引号) ,%x{} or usingopen3`以多种方式运行批处理文件或任何其他命令。我更喜欢使用 open3 -

require 'open3'

log = File.new("#{your_log_dir}/script.log", "w+")
command = "your_batch_file.bat"

Open3.popen3(command) do |stdin, stdout, stderr|
     log.puts "[OUTPUT]:\n#{stdout.read}\n"
     unless (err = stderr.read).empty? then 
         log.puts "[ERROR]:\n#{err}\n"
     end
end

如果您想了解更多关于其他选项的信息,可以参考Ruby、exec、system 和 %x() 之间的差异或反引号以获取相关文档的链接。

于 2012-10-26T10:00:47.507 回答
1

Ruby 允许您运行任何 shell 命令,包括批处理文件并使用 `` 运算符获取输出。例如:

def run_batch_file
  `my_batch_file.bat`
end
于 2012-10-26T09:59:38.927 回答