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

omg*_*omg 46 windows

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

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

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

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

Bor*_*éry 88

你应该可以使用

  • "c:\ Program Files"(注意引号)
  • c:\ PROGRA~1(短名称表示法)

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

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

  • @ChrisF:如果只是我可以对你的评论进行投票,我会的.你在哪里得到"Windows仍然使用旧的8.3字符名称格式"的想法?相反,文件系统可以配置为根本不使用它. (6认同)
  • 你能解释为什么"c:\ PROGRA~1"和"c:\ Program Files"的意思相同吗? (3认同)
  • 您能否确定短名称永远不会改变,这对于配置文件来说很重要? (2认同)
  • 短名称可能与您的示例不同,例如,如果您还有一个名为C:\ ProgramFiles(没有空格)或类似的文件夹,您可能会获得"C:\ Program Files"的C:\ PROGRA~2 (2认同)
  • @mghie - 好吧也许"使用"这个词太强了.格式仍然可用,Windows识别它,从这个意义上它"使用"它.我想如果你拿走它仍然可以使用Windows,但我有一种潜在的怀疑,即仍然有一些旧的代码无法识别潜伏在操作系统深处的长名称. (2认同)

lit*_*lit 30

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

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

"%ProgramFiles%\theapp\app.exe"
"%ProgramFiles(x86)%\theapp\app.exe"
Run Code Online (Sandbox Code Playgroud)

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


MrD*_*DEV 9

使用以下表示法:

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

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

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

:

  • 避免这样做,因为没有*保证*它们将分别缩写为 ~1 和 ~2。如果有人将 Windows 安装到已经有一个名为“C:\Programmers”的文件夹的系统上,那么它将采用短名称“C:\PROGRA~1”,因此“C:\Program Files”将为“C:\PROGRA~2”等。 (2认同)
  • 是的,也许吧,但在大多数情况下它都会起作用。我认为理想的答案是上面突出显示的答案,这是 lit 的答案。不管怎样,感谢您的投入。 (2认同)

har*_*rms 7

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

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


And*_*lli 6

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

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


Ste*_*per 5

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

c:\program files\Internet Explorer\iexplore.exe 
Run Code Online (Sandbox Code Playgroud)

不会启动Internet Explorer,但是

"c:\program files\Internet Explorer\iexplore.exe" 
Run Code Online (Sandbox Code Playgroud)

将.