How do I specify C:\Program Files without a space in it for programs that can't handle spaces in file paths?
A configuration file needs position of another file,
but that file is located in "C:\Program Files",
and the path with space in it is not recognized,
Is there another way to specify the location without space in it?
Solution 1:
you should be able to use
- "c:\Program Files" (note the quotes)
- c:\PROGRA~1 (the short name notation)
Try c:\> dir /x (in dos shell)
This displays the short names generated for non-8dot3 file names. The format is that of /N with the short name inserted before the long name. If no short name is present, blanks are displayed in its place.
Solution 2:
Never hardcode this location. Use the environment variables %ProgramFiles%
or %ProgramFiles(x86)%
.
When specifying these, always quote because Microsoft may have put spaces or other special characters in them.
"%ProgramFiles%\theapp\app.exe"
"%ProgramFiles(x86)%\theapp\app.exe"
In addition, the directory might be expressed in a language you do not know. http://www.samlogic.net/articles/program-files-folder-different-languages.htm
>set|findstr /i /r ".*program.*="
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
Use these commands to find the values on a machine. DO NOT hardcode them into a program or .bat or .cmd file script. Use the variable.
set | findstr /R "^Program"
set | findstr /R "^Common"
Solution 3:
Use the following notations:
- For "C:\Program Files", use "C:\PROGRA~1"
- For "C:\Program Files (x86)", use "C:\PROGRA~2"
Thanks @lit for your ideal answer in below comment:
Use the environment variables %ProgramFiles% and %ProgramFiles(x86)%
:
Solution 4:
I think the reason those suggesting using the C:\PROGRA~1 name have received downvotes is because those names are seen as a legacy feature of Windows best forgotten, which may also be unstable, at least between different installations, although probably not on the same machine.
Also, as someone pointed out in a comment to another answer, Windows can be configured not to have the 8.3 legacy names in the filesystem at all.