Issue #7143 has been updated by phasis68 (Heesob Park).


As you know, && is a shell feature.

using "&&" works well when used with the internal command.

irb(main):001:0> system('ver && ls')

Microsoft Windows XP [Version 5.1.2600]
Thumbs.db       devkitvars.ps1  home     m.ico     msys.ico     qq2    xxx
bin             dk.rb           include  mingw     postinstall  sbin
devkitvars.bat  etc             lib      msys.bat  qq           share
=> true

Here is a simple patch to invoke shell when command contains '&':
diff --git a/win32.c b/win32.c.new
index 7eaf1fc..3446728 100644
--- a/win32.c
+++ b/win32.c.new
@@ -1446,6 +1446,7 @@ has_redirection(const char *cmd)
          case '>':
          case '<':
          case '|':
+         case '&':
          case '\n':
            if (!quote)
                return TRUE;


----------------------------------------
Bug #7143: system("ls && ls") should work in windows
https://bugs.ruby-lang.org/issues/7143#change-30375

Author: rogerdpack (Roger Pack)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.3p194 (2012-04-20) [i386-mingw32]


Hello.
Since windows "on the command line" supports &&, I believe this should work for ruby system commands.

It appears this run both commands, as expected (the first one fails):

using "||" works well:

>> system("ffmpeg -i || ls") # ffmpeg -i fails

using &&

>> system("ls && ls")
ls: &&: No such file or directory
ls: ls: No such file or directory
=> false

Thanks.
-roger-


-- 
http://bugs.ruby-lang.org/