File::exists?( "filename with a blank in it" )

Newbie here/

Consider

IMAGEMAGICK_EXE_PATH = '"f:\Program Files\ImageMagick-6.5.8-Q16\convert.exe"'

(rdb:2) File::exists?( IMAGEMAGICK_EXE_PATH )
false

What's the right way to test if a file name which has a blank in it exists?

The issue isn't so much that you have a blank in it as that you've added an extra set of quotes -- in the example above, your filename has double quotes at the beginning and end. Drop the double quotes and it should work fine, assuming the path is correct.

Matt

···

On Tue, 12 Jan 2010, Ralph Shnelvar wrote:

Newbie here/

Consider

IMAGEMAGICK_EXE_PATH = '"f:\Program Files\ImageMagick-6.5.8-Q16\convert.exe"'

Well, probably to NOT put the quotes into the filename.

IMAGEMAGICK_EXE_PATH = 'f:\\Program Files\\ImageMagick-6.5.8-Q16\\convert.exe'
or
IMAGEMAGICK_EXE_PATH = 'f:/Program Files/ImageMagick-6.5.8-Q16/convert.exe'
(yes, Ruby's File class will work just fine with / as the directory separator even on Windows.)

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

···

On Jan 11, 2010, at 1:30 PM, Ralph Shnelvar wrote:

Newbie here/

Consider

IMAGEMAGICK_EXE_PATH = '"f:\Program Files\ImageMagick-6.5.8-Q16\convert.exe"'

(rdb:2) File::exists?( IMAGEMAGICK_EXE_PATH )
false

What's the right way to test if a file name which has a blank in it exists?

For double quotes: use double backlashes:

"F:\\Program Files\\ImageMagick..."

For single quotes, it can work as is.

I recommendation also is ensure all the paths are expanded with
File.expand_path, which is going to ensure forward slashes are used
instead.

···

On Jan 11, 3:30 pm, Ralph Shnelvar <ral...@dos32.com> wrote:

Newbie here/

Consider

IMAGEMAGICK_EXE_PATH = '"f:\Program Files\ImageMagick-6.5.8-Q16\convert.exe"'

(rdb:2) File::exists?( IMAGEMAGICK_EXE_PATH )
false

What's the right way to test if a file name which has a blank in it exists?

--
Luis Lavena

Matthew K. Williams wrote:

···

On Tue, 12 Jan 2010, Ralph Shnelvar wrote:

Newbie here/

Consider

IMAGEMAGICK_EXE_PATH = '"f:\Program Files\ImageMagick-6.5.8-Q16\convert.exe"'

The issue isn't so much that you have a blank in it as that you've added
an extra set of quotes -- in the example above, your filename has double
quotes at the beginning and end. Drop the double quotes and it should
work fine, assuming the path is correct.

Matt

Isn't a Windows pathname with surrounding double quotes a valid
pathname?!?!?

What's the best Ruby-esque way to stip out surrounding double quotes if
they exist?

And ,yes, your example and Rob Biedenharn's example both work.

Thank you to both.
--
Posted via http://www.ruby-forum.com/\.

Matthew K. Williams wrote:

Newbie here/

Consider

IMAGEMAGICK_EXE_PATH = '"f:\Program Files\ImageMagick-6.5.8-Q16\convert.exe"'

The issue isn't so much that you have a blank in it as that you've added
an extra set of quotes -- in the example above, your filename has double
quotes at the beginning and end. Drop the double quotes and it should
work fine, assuming the path is correct.

Matt

Isn't a Windows pathname with surrounding double quotes a valid
pathname?!?!?

What's the best Ruby-esque way to stip out surrounding double quotes if
they exist?

And ,yes, your example and Rob Biedenharn's example both work.

Thank you to both.

Well, perhaps you're thinking of the quotes that are needed/used to supply a path containing spaces to a command-line program.

In any case, you could remove quotes with:

def unquote(string)
   string.sub(/\A(['"])(.*)\1\z/, '\2')
end

unquote(IMAGEMAGICK_EXE_PATH)

IMAGEMAGICK_EXE_PATH = '"f:\Program Files\ImageMagick-6.5.8-

Q16\convert.exe"'
=> "\"f:\\Program Files\\ImageMagick-6.5.8-Q16\\convert.exe\""

Note that the canonical representation of the string makes the included double-quotes obvious.

def unquote(string)
    string.sub(/\A(['"])(.*)\1\z/, '\2')
  end

=> nil

unquote(IMAGEMAGICK_EXE_PATH)

=> "f:\\Program Files\\ImageMagick-6.5.8-Q16\\convert.exe"

Compare this result to the value of IMAGEMAGICK_EXE_PATH itself above.

unquote(unquote(IMAGEMAGICK_EXE_PATH))

=> "f:\\Program Files\\ImageMagick-6.5.8-Q16\\convert.exe"

And this is save against a path without quotes, too.

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

···

On Jan 11, 2010, at 2:50 PM, Ralph Shnelvar wrote:

On Tue, 12 Jan 2010, Ralph Shnelvar wrote:

Ralph Shnelvar wrote:

Isn't a Windows pathname with surrounding double quotes a valid
pathname?!?!?

The quotes are not part of the file-name.

When one enters
  type "foo bar"
at the DOS-prompt, the quotes serve to indicate that there
is one file named
  foo bar
and not two files named
  foo
and
  bar

If you enter
  dir foo*
you will see
  foo bar
not
  "foo bar"

The quotes are not part of the file-name.

···

--

W. James wrote:

Ralph Shnelvar wrote:

Isn't a Windows pathname with surrounding double quotes a valid
pathname?!?!?

...

If you enter
  dir foo*
you will see
  foo bar
not
  "foo bar"

The quotes are not part of the filename.

Yes, you are quite right

···

--
Posted via http://www.ruby-forum.com/\.