Windows Command Prompt和PowerShell等命令行环境使用空格分隔命令和参数,但是文件和文件夹名称也可以包含空格。要指定文件路径,并在其中带有空格,您需要对其进行“转义”。
命令行101:为什么必须转义空间
“转义”角色会改变其含义。例如,转义空格将使Shell将其视为标准空格字符,而不是将命令行参数分开的特殊字符。
例如,假设您有一个想要查看其内容的文本文件。您可以使用type命令执行此操作。假设文本文件位于C:\Test\File.txt,则命令提示符中的以下命令将显示其内容:
键入C:\ Test \ File.txt
大。现在,如果您有相同的文件C:\Test Folder\Test File.txt怎么办?如果尝试运行以下命令,该命令将不起作用-文件路径中的这些空格会妨碍您的操作。
键入C:\ Test Folder \ Test File.txt
命令行认为您正在尝试查找名为的文件, C:\Test并说“找不到指定的路径”。
在Windows上逃脱空间的三种方法
在Windows上可以使用三种不同的方法来转义文件路径:
将路径(或路径的一部分)用双引号(“)引起来。
通过在每个空格之前添加一个脱字符号(^)。(这仅在命令提示符/ CMD中有效,并且似乎不适用于每个命令。)
在每个空格之前添加一个重音符号(`)。(这仅在PowerShell中有效,但始终有效。)
我们将向您展示如何使用每种方法。
将路径括在引号()中
确保Windows正确对待文件路径的标准方法是用双引号(“)括起来。例如,使用上面的示例命令,我们将改为运行以下命令:
键入“ C:\ Test Folder \ Test File.txt”
如果愿意,实际上可以将路径的部分用引号引起来。例如,假设您在该文件夹中有一个名为File.txt的文件。您可以运行以下命令:
键入C:\“测试文件夹” \ File.txt
但是,这不是必需的-在大多数情况下,您只需在整个路径上使用引号即可。
该解决方案在传统的命令提示符(CMD)环境和Windows PowerShell中均有效。
有时:使用尖号字符转义空格(^)
理论上,在命令提示符中,脱字符号(^)可让您转义空格。只需在文件名中的每个空格之前添加它即可。(您可以在键盘上的数字行中找到此字符。要键入尖号字符,请按Shift + 6。)
问题是:虽然这应该起作用,有时也可以,但并非总是如此。命令提示符对此字符的处理很奇怪。
例如,使用我们的示例命令,您将运行以下命令,但它将不起作用:
键入C:\ Test ^ Folder \ Test ^ File.txt
另一方面,如果尝试通过在命令提示符下键入路径直接打开文件,则可以看到插入号字符正确地转义了空格:
C:\ Test ^文件夹\ Test ^ File.txt
那么什么时候起作用?好吧,根据我们的研究,它似乎可以与某些应用程序一起使用,而不适用于其他应用程序。您的里程可能会因所使用的命令而异。命令提示符对此字符的处理很奇怪。如果有兴趣,请尝试使用任何正在使用的命令-它可能会或可能不会起作用。
为了保持一致,我们建议您在命令提示符中使用双引号-或切换到PowerShell并使用下面的重音符方法。
PowerShell:使用严重口音字符(`)
PowerShell将重音符(`)用作其转义符。只需在文件名中的每个空格之前添加它即可。(您会在键盘上的Tab键上方和Esc键下方找到此字符。)
输入C:\ Test` Folder \ Test` File.txt
每个严重的重音符号告诉PowerShell逃避以下字符。
请注意,这仅在PowerShell环境中有效。您必须在命令提示符中使用插入符号。
如果您熟悉Linux和macOS之类的UNIX之类的操作系统,则可能习惯于在空格前使用反斜杠(\)字符对其进行转义。Windows将其用于常规文件路径,因此不起作用-插入符(^)和重音符(`)字符是Windows版本的反斜杠,具体取决于您使用的命令行外壳。