From: Tobias Reif Date: 2003-09-03T17:58:26+09:00 Subject: [windows 9*] how to get the output of commands which contain backslashes? Hi I have to deal with the annoying shell of Windows. Some stuff works OK via SHELL = if CONFIG["arch"] =~ /win/ # more stuff based on www.ruby-talk.org/9739, thanks Phil :) ... but I can't get the output of commands which include backslashes. Often they can be replaced with forward slashes, eg when a file path is passed as arg to a program. But if the strings which are passed directly to the shell contain backslashes, eg when the program itself is called via a path, then there is no output. # those work: (don't contain backslashes) puts `command.com /c ver` # Windows Millennium [Version 4.90.3000] puts `command.com /c ruby -v` # ruby 1.6.5 (2001-09-19) [i386-cygwin] # this works on the commandline: # \for-programs\use\tidy\tidy.exe -v # HTML Tidy for Windows released on 1st February 2003 # this doesn't work (as expected): # /for-programs/use/tidy/tidy.exe -v # Befehl oder Dateiname nicht gefunden. # [command not found] # these don't work (nothing printed) # how to get this to work? puts `command.com /c \for-programs\use\tidy\tidy.exe -v` puts `command.com /c \\for-programs\\use\\tidy\\tidy.exe -v` # also doesn't work (as expected): puts `command.com /c /for-programs/use/tidy/tidy.exe -v` # Befehl oder Dateiname nicht gefunden. # [command not found] I tried various stuff def shell command #full_command = SHELL+' '+command.gsub(/\\/,'\&\&') # or # full_command = SHELL+' '+command.dump `#{full_command}` end ... but nothing works so far. No error message, but also no output. How to escape a backslash in order to pass a single backslash to the shell? I appreciate any solution, even dirty hacks and quirky workarounds :) Tobi -- http://www.pinkjuice.com/