如何在命令提示符中使用默认应用程序打开文件?

30

我想在用户创建文件后,打开该文件的默认编辑器。目前,我的脚本如下:

@echo off
@echo --- Create A New File ---
@echo -
@echo Where should we put the new file?
set /p fileLocation=@ %UserProfile%\
@echo -
@echo What do you want to call your new file?
set /p fileName=@ 
@echo -
@echo Almost Done! What is the files extension?
set /p extension=@ .
@echo -
copy NUL "%UserProfile%\%fileLocation%\%fileName%.%extension%"

我点击文件后,执行以下命令:选择位置 > 选择文件名 > 选择文件扩展名。我已经接近完成我想要的了,但还有最后一件事。如何获取我创建的文件名,然后在其默认文本编辑器中打开?


也许可以参考以下链接:https://dev59.com/3qfja4cB1Zd3GeqP2uQm - tripleee
4个回答

45

添加在结尾处,它会打开另一个命令行窗口,而不是文件。 - omnix
1
然后您应该在使用 assoc 命令之前将扩展名与文件类型关联起来,使用 ftype 命令将文件类型与应用程序关联起来。 - Colin Hebert
assoc .myExt = MyNewFileTypeFTYPE MyNewFileType=C:\NotePad.exe 将把 ".myExt" 扩展名与 NotePad.exe 关联起来,如果你执行 start anyFile.myExt,它将在 NotePad.exe 中打开。 - Colin Hebert
1
事实上,你不能真正这样做。在启动应用程序之前,您必须了解文件类型关联。因此,您必须手动执行这些命令来首先进行关联。然后,您将能够随时调用启动方法。 - Colin Hebert
嗯,怎么样……获取我输入的文件位置,然后使用启动命令? - omnix
显示剩余6条评论

24

15
新手请注意空引号。这是必需的,而且没有其他可行的方法。 - PiotrK
它应该... start "" "path\file.extension" || notepad.exe "path\file.extension" - TamusJRoyce

10
您还可以使用 explorer.exe/explorer 打开文件(例如:explorer file.txt)。 如果您使用 WSL 并且具有别名,例如 alias open="explorer.exe",则这也非常有效,因此您可以像这样调用它,例如:open file.txt

我经常使用这个过程(也来自Cobol),但我发现每次运行它都会创建一个新的explorer.exe进程,并且可能在退出应用程序时不会关闭。请检查任务管理器。 - Ivan Ferrer Villa
嗯,我的情况不是这样的。我尝试以这种方式打开了几个文件,但在任务管理器中没有看到任何 explorer.exe 进程。 - Nathan

2

我使用以下命令成功实现了文件关联的正确方式。这只是一个例子:

REG ADD "HKEY_CLASSES_ROOT\Applications\notepad++.exe\shell\open\command" /v @ /t REG_SZ /d "\"C:\\Program Files\\Noteepad++\\notepad++.exe\" \"%1\"" /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt" /v "Application" /t REG_SZ /d "notepad++.exe" /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList" /v "g" /t REG_SZ /d "notepad++.exe" /f

assoc .txt=MyCustomType
ftype MyCustomType="C:\Program Files\Noteepad++\notepad++.exe" "%1"

(最好将它们放在.bat文件中)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接