[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

system command is wierd

Junkone

2/1/2008 3:49:00 AM

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> .. ..
5 Answers

Ryan Davis

2/1/2008 3:55:00 AM

0


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"

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



Michael W. Ryder

2/1/2008 3:55:00 AM

0

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.

dan.macdaddy+ruby

2/1/2008 4:07:00 AM

0

[Note: parts of this message were removed to make it a legal post.]

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.
>
>

Nobuyoshi Nakada

2/1/2008 8:18:00 AM

0

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

dan.macdaddy+ruby

2/2/2008 12:15:00 AM

0

[Note: parts of this message were removed to make it a legal post.]

Yeah

Windows/DOS has accepted either / or \ as directory separators for a while:
http://en.wikipedia.org/...(computing)#Representations_of_paths_by_operating_system

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
>
>