Shell 使用命令行中的默认程序打开包含空格的文件

Shell 使用命令行中的默认程序打开包含空格的文件,shell,windows-7,command-line,Shell,Windows 7,Command Line,我试图通过默认程序通过命令行打开一个可能包含空格的文件。我在这里读了几个答案,不幸的是,这些答案并没有帮助我解决问题 简言之,这将起作用 C:\>"C:\Program Files\Envelope Manager\Dazzling\Dazzling.exe" C:\Users\Public\Documents\Endic\Dazzling\_thelayout.LYT 但是在文件名周围加引号并没有任何好处 C:\>"C:\Program Files\Envelope Manage

我试图通过默认程序通过命令行打开一个可能包含空格的文件。我在这里读了几个答案,不幸的是,这些答案并没有帮助我解决问题

简言之,这将起作用

C:\>"C:\Program Files\Envelope Manager\Dazzling\Dazzling.exe" C:\Users\Public\Documents\Endic\Dazzling\_thelayout.LYT
但是在文件名周围加引号并没有任何好处

C:\>"C:\Program Files\Envelope Manager\Dazzling\Dazzling.exe" "C:\Users\Public\Documents\Endic\Dazzling\thelayout.LYT"
理想情况下,我希望它能够工作(包括空间)

我只想打开文件,其中有时包含一个带有眩目的.exe的空格,假设两个路径都可能包含空格

我看到了一个关于前一篇文章的答案,其中提到了这一页:


这不起作用

对我来说,这在Windows 7上起作用:

explorer.exe "\some\path\x x.txt"

使用记事本打开
x x.txt
,例如使用默认关联。

如果是.LYT文件的注册应用程序,则只需使用start命令:

start "" "C:\Users\Public\Documents\Endic\Dazzling\thelayout.LYT"

试试这个-它使用短路径名。它可能由于函数中的错误而失败

@echo off
set "file=C:\Users\Public\Documents\Endic\Dazzling\_thelayout.LYT"
for %%a in ("%file%") do (
"C:\Program Files\Envelope Manager\Dazzling\Dazzling.exe" %%~sfa
)
这可以通过将一个文件放到批处理文件中来实现

@echo off
set "file=%~1"
for %%a in ("%file%") do (
"C:\Program Files\Envelope Manager\Dazzling\Dazzling.exe" %%~sfa
)

奇怪的是,双击该文件会让人眼花缭乱,但默认情况下不会打开LYT文件,因此调用该文件本身将不起作用。使用令人眼花缭乱的.exe pathtofile似乎有效,但仅当文件名的完整路径没有空格时才有效。令人眼花缭乱不符合Windows惯例。您可以使用数据文件的短路径\文件名。不幸的是,这不适用于我的程序。虽然该程序是LYT文件的默认程序,但调用该文件将在默认情况下打开关联的程序而不打开LYT文件。为什么添加引号没有任何好处?为什么您链接的页面上的解决方案不起作用?
@echo off
set "file=%~1"
for %%a in ("%file%") do (
"C:\Program Files\Envelope Manager\Dazzling\Dazzling.exe" %%~sfa
)