system command is wierd

J

Junkone

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

Ryan Davis

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

Michael W. Ryder

Junkone said:
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.
 
D

Dan

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

Nobuyoshi Nakada

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

Dan

[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/wiki/Path_(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





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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top