On Sun, 7 May 2006, Ryan Leavengood wrote: > It works for me on the latest One-Click: > > C:\_Ryan\downloads>irb > irb(main):001:0> system('echo "hello world!" > hello.txt') > => true > irb(main):002:0> exit > > C:\_Ryan\downloads>type hello.txt > "hello world!" Strange, I get E:\Temp>irb irb(main):001:0> system('echo "hello world" > hello.txt') => false irb(main):002:0> exit E:\Temp>type hello.txt The system cannot find the file specified. Can it be because I also have cygwin installed? > Another option is to do the redirection yourself: > > File.open('output.txt', 'w') do |file| > IO.popen('dir') do |pipe| > pipe.each do |line| > file.print line > end > end > end How can I pass arguments to the pipe? E:\Temp>irb irb(main):003:0> File.open('output.txt', 'w') do |file| irb(main):004:1* IO.popen('echo "Hello world"') do |pipe| irb(main):005:2* pipe.each do |line| irb(main):006:3* file.print line irb(main):007:3> end irb(main):008:2> end irb(main):009:1> end Errno::ENOENT: No such file or directory - echo "Hello world" from (irb):4:in `popen' from (irb):4 from (irb):3 > Ryan Thanks, Aditya > On 5/7/06, Aditya Mahajan <adityam / umich.edu> wrote: >> I am using the one-click installer on windows (RC2). I can not get >> output redirection to work with Kernel.system. Consider the following code >> >> F:\tmp\cont-test\test>cat test.rb >> def test(command) >> puts command >> puts Kernel.system(command) >> puts "---------------------------" >> end >> >> test("mpto mp-test-01.mp") >> test("mpto mp-test-01.mp > mp-test-01-test.tex") >> >> >> mpto.exe is a helper program that comes with metapost and is part of most >> tex >> distributions. It is included in my path environment. I have a file >> mp-test-01.mp in the current directory. mpto scans the .mp file and outputs >> on >> stdout. I want to redirect that output to a file. But > does not work. >> >> Running this program gives >> >> F:\tmp\cont-test\test>ruby test.rb >> mpto mp-test-01.mp >> \gdef\mpxshipout{\shipout\hbox\bgroup >> \setbox0=\hbox\bgroup} >> \gdef\stopmpxshipout{\egroup \dimen0=\ht0 \advance\dimen0\dp0 >> \dimen1=\ht0 \dimen2=\dp0 >> \setbox0=\hbox\bgroup >> \box0 >> \ifnum\dimen0>0 \vrule width1sp height\dimen1 depth\dimen2 >> \else \vrule width1sp height1sp depth0sp\relax >> \fi\egroup >> \ht0=0pt \dp0=0pt \box0 \egroup} >> \mpxshipout% line 2 mp-test-01.mp >> This is a test\stopmpxshipout >> \end{document} >> true >> --------------------------- >> mpto mp-test-01.mp > mp-test-01-test.tex >> false >> --------------------------- >> >> system "mpto ..." executes correctly (the true after \end{document}) >> while system "mpto ... > ...." fails. No mp-test-01-test.tex file is >> created. >> >> When I give the same commands from cmd.exe they work. I am confused why >> something as simple as output redirection is not working. What is the >> correct >> way to do this? >> >> Thanks, >> Aditya >> >> > > > -- Aditya Mahajan, EECS Systems, University of Michigan http://www.eecs.umich.edu/~adityam || Ph: 7342624008