对于无法处理文件路径中的空格的程序,如何在没有空格的情况下指定C:\ Program Files?

时间:2009-05-21 11:54:22

标签: windows

配置文件需要另一个文件的位置

但该文件位于“C:\ Program Files”,

并且无法识别其中包含空格的路径,

是否有另一种方法来指定没有空格的位置?

14 个答案:

答案 0 :(得分:85)

你应该可以使用

  • “c:\ Program Files”(请注意引号)
  • c:\ PROGRA~1 (短名称符号)

尝试c:\> dir / x(在dos shell中)

  

显示短名称   为非8dot3文件名生成。   格式是/ N的格式   短名称插入之前   名称。如果没有短名称,   空格显示在它的位置。

答案 1 :(得分:21)

切勿对此位置进行硬编码。使用环境变量%ProgramFiles%%ProgramFiles(x86)%

指定这些时,请始终引用,因为Microsoft可能在其中放置了空格或其他特殊字符。

"%ProgramFiles%\theapp\app.exe"
"%ProgramFiles(x86)%\theapp\app.exe"

此外,目录可能以您不知道的语言表达。 http://www.samlogic.net/articles/program-files-folder-different-languages.htm

答案 2 :(得分:7)

我认为那些建议使用C:\ PROGRA~1名称收到downvotes的原因是因为这些名称被视为Windows最遗忘的遗留功能,这可能也是不稳定的,至少在不同的安装之间,尽管可能不在同一台机器上。

此外,正如有人在对另一个答案的评论中指出的那样,Windows可以配置为根本不在文件系统中拥有8.3遗留名称。

答案 3 :(得分:6)

Windows shell(假设您正在使用CMD.exe)使用%ProgramFiles%指向Program Files文件夹,无论它在何处。由于默认的Windows文件打开器会考虑这样的环境变量,如果程序写得很好,它应该支持这个。

此外,值得使用相对地址。如果您正在使用的程序安装正确,它应该已经在Program Files文件夹中,因此您可以将配置文件称为。\ config_file.txt,如果它与程序位于同一目录中,或者.. \ other_program \ config_file.txt如果它在一个不同于另一个程序的目录中。这不仅适用于Windows,而且适用于几乎所有现代操作系统,并且如果您正确设置了“开始”框,或者直接从其文件夹运行它,它将正常工作。

答案 4 :(得分:6)

使用以下符号:

  • 对于" C:\ Program Files ",请使用" C:\ PROGRA~1 "
  • 对于" C:\ Program Files(x86)",请使用" C:\ PROGRA~2 "

感谢@lit在下面的评论中给出了理想的答案:

  

使用环境变量%ProgramFiles%%ProgramFiles(x86)%

答案 5 :(得分:5)

应该有一种方法可以直接使用完整的c:\program files路径。通常,它涉及将字符串包装在引号中。例如,在Windows命令行上;

c:\program files\Internet Explorer\iexplore.exe 

不会启动Internet Explorer,但

"c:\program files\Internet Explorer\iexplore.exe" 

意愿。

答案 6 :(得分:1)

没有

有时您可以引用文件名。

"C:\Program Files\Something"

有些程序会容忍引号。由于您没有提供任何特定的程序,因此无法确定引用是否适合您。

答案 7 :(得分:1)

尝试用引号括起路径。即“C:\ Program Files \ Appname \ config.file”

答案 8 :(得分:1)

对于不能处理文件路径中空格的程序,可以使用以下方法指定C:\ Program Files文件中没有空格:

'Path to Continuum Reports Subdirectory - Note use DOS equivalent (no spaces)
RepPath = "c:\progra~1\continuum_reports\" or
RepPath = C:\Program Files\Continuum_Reports  'si es para 64 bits.

' Path to Continuum Reports Subdirectory - Note use DOS equivalent (no spaces)
RepPath = "c:\progra~2\continuum_reports\" 'or
RepPath = C:\Program Files (x86)\Continuum_Reports  'si es para 32 bits.

答案 9 :(得分:0)

您可以尝试使用:

C:\PROGRA~1

答案 10 :(得分:0)

我认为其他帖子已经回答了这个问题,但只是一些有趣的信息(来自命令提示符):

dir c:\ / ad / x

这将提供仅列出目录的列表,并提供其“短名称”。

答案 11 :(得分:-2)

使用生成的短名称(C:\ Progra~1)或用引号括起路径。

答案 12 :(得分:-2)

作为其他答案的替代方案,您可以尝试符号链接

首先创建符号链接,然后根据链接安装应用程序。 (根据具体情况,这可能更容易实现,例如当应用程序在其代码中提到目标文件夹时)

符号链接将创建类似于文件夹快捷方式的内容,但被其他应用程序视为实际文件夹。

您就是这样做的:

  • 以管理员身份运行cmd
  • 使用此命令:mklink /D "C:\LinkToProgramFiles" "C:\Program Files"

然后,你开始使用" C:\ LinkToProgramFiles"在无法处理空间的应用程序中。 (此链接可在Windows资源管理器中显示为带有快捷方式符号的文件夹)

如果开始玩太多,请不要创建循环链接。

答案 13 :(得分:-3)

您可以在本地D或本地C创建一个文件夹ProgramFiles,以安装那些可以安装到文件夹名称上的应用程序,其中包含SPACES / Characters。