【问题标题】:Opening file with spaces in Windows via Command Prompt通过命令提示符在 Windows 中打开带空格的文件
【发布时间】:2012-12-03 21:14:30
【问题描述】:

我想通过脚本在其默认程序中打开一个文件(尤其是视频文件)。当我遇到带有空格的文件名时,它被视为几个参数,这并不奇怪:

  C:\folder>start test space.avi
  The system cannot find the file test.

但是,当我用引号将文件名括起来时:

  C:\folder>start "test space.avi"

不是在其默认程序 (VLC) 中打开文件,而是在文件目录中打开一个新的命令提示符窗口。

打开没有空格或引号的文件会按预期在 VLC 中打开文件。

我该如何解决这个问题?

【问题讨论】:

  • 仅供参考:" 是引号,而不是括号。 (在编程时,由于语法,术语很重要。):-)
  • 我不知道我是怎么犯这个错误的。谢谢。

标签: shell windows-7 command-line


【解决方案1】:

当第一个参数的第一个字符是引号时,我怀疑 start 会做一些特别的事情。第一个参数是窗口标题,第二个是要打开的命令/文件

start "" "test space.avi"

http://ss64.com/nt/start.html

【讨论】:

  • 这就是问题的确切答案!
【解决方案2】:

不用start,并用双引号将完整的文件名(包括任何路径)括起来。这在我的系统上运行良好:

C:\>"test space.avi"

【讨论】:

    【解决方案3】:

    这是一个众所周知的问题(至少对我来说 :-)

    您必须在CMD 脚本中使用短名称格式。 要找出特定文件的短名称,请执行以下操作:

    1. 打开一个指向文件文件夹的CMD 窗口。
    2. 运行命令:$> dir /X
    3. 在中间列中,您将看到感兴趣文件的短名称。在您的特定情况下,它将类似于:TESTSP~1.AVI
    4. 在您的脚本中使用这个裸名。

    希望对你有帮助

    【讨论】:

    • 嗯,不,你没有。看我的回答。
    • 在一般情况下(我想到的)你必须这样做。除非您想启动 GUI 应用程序,因此根本不需要使用 start 命令。
    • 这个问题专门询问了关于使用默认程序的问题,其中大多数(如果不是全部 - 我还没有发现任何失败的程序)在没有 start 使用引用的长文件名的情况下启动得很好.您是否想到了一种不起作用的特定格式(具有已注册的默认处理程序)?如果它不能工作,那是程序的错。 Windows 会正确传递长文件名,如果接收程序没有正确使用它,您应该更换接收程序;支持长文件名已有 17 年以上的历史了。
    【解决方案4】:

    按照 Glen 的指示添加初始 "" 可确保 CMD 继续并且不会进入等待模式。这在批处理文件中尤为重要。

    总结:

    1- 打开文件并等待用户关闭它,然后继续执行下一个命令

    start "" "test space.avi"
    

    2- 打开文件并继续下一个命令(无需等待)

    start "" "test space.avi"
    

    根据您的需要,您可以选择 1 或 2。

    【讨论】:

    • 我看不出 (1) 和 (2) 之间的区别?
    • 对我来说,它与 start "" "name with space.ext" 一起使用。如果我不使用第一个空双引号,它对我不起作用。相反,它奇怪地打开了一个新的 CMD 窗口实例。
    • 嗯,你不想写第二个:start /b "" "file name.any"
    猜你喜欢
    • 1970-01-01
    • 2022-06-20
    • 2021-11-24
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多