System command is wierd

Hello. this system command works from the command prompt but not from
irb. when i have a space in the directory name, the irb system command
cannot take it.

irb(main):008:0> system("dir e:\\program files")
Volume in drive E has no label.
Volume Serial Number is N857-EB60

Directory of e:\

File Not Found

Directory of E:\Documents and Settings\rocky

File Not Found
=> false

When i try this thro command prompt, it works
E:\Documents and Settings\rocky>dir "e:\program files"
Volume in drive E has no label.
Volume Serial Number is B857-EB62

Directory of e:\program files

26/01/2008 06:41 PM <DIR> .
26/01/2008 06:41 PM <DIR> .. ..

compare what you're doing in both and notice how they're different.

···

On Jan 31, 2008, at 19:49 , Junkone wrote:

irb(main):008:0> system("dir e:\\program files")
E:\Documents and Settings\rocky>dir "e:\program files"

Junkone wrote:

Hello. this system command works from the command prompt but not from
irb. when i have a space in the directory name, the irb system command
cannot take it.

irb(main):008:0> system("dir e:\\program files")
Volume in drive E has no label.
Volume Serial Number is N857-EB60

Directory of e:\

File Not Found

Directory of E:\Documents and Settings\rocky

File Not Found
=> false

When i try this thro command prompt, it works
E:\Documents and Settings\rocky>dir "e:\program files"
Volume in drive E has no label.
Volume Serial Number is B857-EB62

Directory of e:\program files

26/01/2008 06:41 PM <DIR> .
26/01/2008 06:41 PM <DIR> .. ..

Have you tried system('dir e:\\"program files"') ?
This works for me in irb.

If i recall correctly, ruby will convert paths between different os's if it
can.

So instead of

system('dir e:\\"program files"')

you could use

system('dir "e:/program files"')

and save yourself escaping the backslash.

···

On Feb 1, 2008 2:24 PM, Michael W. Ryder <_mwryder@worldnet.att.net> wrote:

Junkone wrote:
> Hello. this system command works from the command prompt but not from
> irb. when i have a space in the directory name, the irb system command
> cannot take it.
>
> irb(main):008:0> system("dir e:\\program files")
> Volume in drive E has no label.
> Volume Serial Number is N857-EB60
>
> Directory of e:\
>
> File Not Found
>
> Directory of E:\Documents and Settings\rocky
>
> File Not Found
> => false
>
>
> When i try this thro command prompt, it works
> E:\Documents and Settings\rocky>dir "e:\program files"
> Volume in drive E has no label.
> Volume Serial Number is B857-EB62
>
> Directory of e:\program files
>
> 26/01/2008 06:41 PM <DIR> .
> 26/01/2008 06:41 PM <DIR> .. ..

Have you tried system('dir e:\\"program files"') ?
This works for me in irb.

Hi,

At Fri, 1 Feb 2008 13:06:56 +0900,
Dan wrote in [ruby-talk:289420]:

you could use

system('dir "e:/program files"')

dir is an internal command, and you can't use forward slashes
as director separators.

···

--
Nobu Nakada

Yeah

Windows/DOS has accepted either / or \ as directory separators for a while:

However as you said dir is an internal command and forward slash breaks with
it on the windows command line, but it does work in irb and stand-alone
ruby.

irb(main):001:0> system('dir "d:/program files"')
Volume in drive D is WINDOWS
Volume Serial Number is 847A-A69A

Directory of d:\program files

13/01/2008 05:21 PM <DIR> .
13/01/2008 05:21 PM <DIR> ..
13/01/2008 05:30 PM <DIR> Cakewalk
24/10/2007 12:04 AM <DIR> Common Files
24/10/2007 12:03 AM <DIR> ComPlus Applications
10/11/2007 11:11 PM <DIR> DAEMON Tools
03/01/2008 05:12 PM <DIR> DIFX
24/10/2007 12:48 AM <DIR> Internet Explorer
04/01/2008 09:28 AM <DIR> Java
24/10/2007 12:19 AM <DIR> Messenger
24/10/2007 12:36 AM <DIR> MSBuild
24/10/2007 12:40 AM <DIR> MSXML 6.0
24/10/2007 12:31 AM <DIR> Reference Assemblies
12/12/2007 09:03 PM <DIR> TortoiseSVN
02/11/2007 04:09 PM <DIR> vim71
24/10/2007 12:03 AM <DIR> Windows NT
               0 File(s) 0 bytes
              18 Dir(s) 5,931,704,320 bytes free
=> true

···

On Feb 1, 2008 6:48 PM, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:

Hi,

At Fri, 1 Feb 2008 13:06:56 +0900,
Dan wrote in [ruby-talk:289420]:
> you could use
>
> system('dir "e:/program files"')

dir is an internal command, and you can't use forward slashes
as director separators.

--
Nobu Nakada