2

Ruby Rake タスクを使用して、同じシステム プロセスでいくつかの Windows コマンド ライン呼び出しを実行しようとしています。呼び出しを正しく行う方法を見つける必要があり、この呼び出しは互いに依存することはできません。

「フォーク」機能が解決策になることは知っていますが、Windows では機能しません。IO.POPENや などの他の関数を試してみましProcess.spawnたが、実際の解決策は見つかりませんでした。

私はRuby 1.9.3Windows XPで作業しています。

task :CmdTest,:value do |t, args|
  value=args.value.to_s
  begin

    $cmd<<("set MYVAR=#{value}")
    $cmd<<("set MYVAR")
    $cmd<<("exit")
  rescue Exception => e
    puts e.message
  end
end

task :CmdTest3 do

  IO.popen("cmd", "r+") do |io|
    th = Thread.new(io) do |chan|
      chan.each {|line| puts line}
    end
    $cmd.each do |f|
      io.puts f
    end
    io.close_write
    th.join
  end
end
4

1 に答える 1

1

win32utilsを見てください、それはあなたが求めているものですか?

于 2013-02-14T10:16:11.520 に答える