如何为无法处理文件path中的空格的程序指定C:\ Program Files中没有空格的文件?

一个configuration文件需要另一个文件的位置,

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

并且空间中的path不被识别,

有没有另一种方式来指定没有空间的位置?

你应该可以使用

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

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

这将显示为非8dot3文件名称生成的短名称。 格式是/ N的格式,在长名称之前插入短名称。 如果不存在短名称,则在其位置显示空白。

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

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

不会启动Internet Explorer,但是

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

将。

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

另外,正如有人在对另一个答案的评论中指出的那样,Windows可以被配置为在文件系统中完全不具有8.3的传统名称。

Windows shell(假设你正在使用CMD.exe)使用%ProgramFiles%指向Program Files文件夹,不管它在哪里。 由于默认的Windows文件打开程序像这样的环境变量,如果程序写得很好,它应该支持这个。

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

没有。

有时候你可以引用文件名。

 "C:\Program Files\Something" 

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

你可以尝试使用:

 C:\PROGRA~1 

你可以尝试使用短文件名(可能是c:\PROGRA~1 ),但是你真的没有告诉我们很多细节。

另一个可能的选择是将引号放在完整路径中,“c:\ program files \ Path \ configfile.ini”

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

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

尝试围绕引号中的路径。 即“C:\ Program Files \ Appname \ config.file”

 c:\progra~1 

在64位窗口,可能

 c:\progra~2 

我认为其他帖子已经回答了这个问题,但是对于你的信息(从命令提示符)有一些有趣的地方:

dir c:\ / ad / x

这将提供只有目录的清单,并提供他们的“短名称”。

避免空间问题的方法有很多,有一些已经提到:

在命令行中,在快捷方式定义中,在bat文件和大多数使用Windows路径API的程序中,可以尝试使用双引号括住文件的路径,如下所示:

 PATH="C:\Program Files\MyApp\MyFile.dat" 

对于同一类别的软件,您还可以使用短名称(从DOS继承,每个级别限制为8个字符)

 PATH=C:\PROGRA~1\MyApp\MyFile.dat 

在Java属性文件等,你需要通过添加一个\之前(注意,你也必须转义\或将其替换为/)来逃避空间:

 path=c:/Program\ Files/Myapp/MyFile.dat or path=c:\Program\ Files\MyApp\MyFile.dat 

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

使用下列符号:

  • 对于“ C:\ Program Files ”,使用“ C:\ PROGRA〜1
  • 对于“ C:\ Program Files(x86) ”,使用“ C:\ PROGRA〜2

感谢@lit为您的理想答案在下面的评论:

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

如果你不能使用引号(或者它们不起作用),并且你有短名称的问题,你可以尝试符号链接

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

所以,你可以做这样的事情:

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

然后,在无法处理空格的应用程序中,开始使用“C:\ LinkToProgramFiles”。 (这个链接可以在Windows资源管理器中看到一个带有快捷方式符号的文件夹)


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