8

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

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

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

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

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

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

我怎样才能解决这个问题?

4

4 回答 4

21

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

start "" "test space.avi"

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

于 2012-12-03T22:29:33.310 回答
14

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

C:\>"test space.avi"
于 2012-12-03T21:23:22.480 回答
3

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

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

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

希望能帮助到你

于 2012-12-03T21:32:07.983 回答
1

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

总之:

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

start "" "test space.avi"

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

start "" "test space.avi"

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

于 2017-11-11T12:28:57.457 回答