我有一个打开了特定快捷方式的程序,但是该快捷方式似乎将参数发送给应用程序。如果我直接转到目标目录并双击,它将不起作用。但是,如果我使用命令行并传递某个参数,则应用程序将正确打开。
我想使用该应用程序打开某些文件类型,但是该应用程序必须具有参数,否则将无法工作。可以做这种事情吗?
我有一个打开了特定快捷方式的程序,但是该快捷方式似乎将参数发送给应用程序。如果我直接转到目标目录并双击,它将不起作用。但是,如果我使用命令行并传递某个参数,则应用程序将正确打开。
我想使用该应用程序打开某些文件类型,但是该应用程序必须具有参数,否则将无法工作。可以做这种事情吗?
Answers:
遇到了与@jtpereyda相同的问题,并且@bobbymcr的解决方案对我也不起作用。我试图将所有命令行参数传递到node.js脚本中,而无需在命令上使用node.exe。
问题是,如果您已经通过Open With
对话框将程序与扩展名相关联,那么您将在两者之间创建一个应用程序关联而不是文件扩展名关联。应用程序关联优先。
如果您不介意编辑注册表,则可以(Default)
在以下路径中修改注册表项:
HKEY_CLASSES_ROOT\Applications\node.exe\shell\open\command
您应该替换node.exe
为要调整的应用程序。
或者,您可以只从HKEY_CLASSES_ROOT\Applications
文件夹中完全删除应用程序文件夹,ftype
关联将开始工作。
确保使用%*
它将在其余未指定的命令行参数中传递或根本不传递任何参数。如果您"%2" "%3" "%4" "%5"
不指定任何命令行参数,则会将5个空字符串参数传递给应用程序。
最后,如果您不能手动修改注册表,则可以使用Nirsoft的免费软件-FileTypesManager- http: //www.nirsoft.net/utils/file_types_manager.html
文件关联将显示在列表的顶部,第一扩展名列中没有任何文本。只需在列表中找到可执行文件的名称,然后选择它即可修改操作名称command line
字段open
。
在Windows7上,更改会立即反映出来,而无需重新启动或重新启动应用程序。但是Nirsoft实用程序具有在任何修改后“刷新桌面”的功能,因此使我相信Vista或更早的OS版本可能会缓存数据。在这种情况下,该实用程序将是更好的选择,否则您可能需要注销并登录以查看更改。
"C:\Program Files\nodejs\node.exe" "%1"%*
注意:该%*
值不在引号中,并且它与先前的双引号之间没有空格。
HKEY_CLASSES_ROOT\.ulaw
了regedit中的密钥,以防万一.ulaw
我正在执行该过程的文件的扩展名在哪里。
HKEY_CLASSES_ROOT
。它更考虑到微软自己的文档早对HKCR是引入大约Windows 2000中的合并视图可以理解的误区
您可以通过assoc
和ftype
在命令提示符下执行此操作。打开提升权限的命令提示符,然后尝试以下操作:
ftype MyFileType = C:\ MyDir \ MyProgram.exe / arg1 / arg2“%1” assoc .xyz = MyFileType
这会将.xyz
扩展名与之关联MyProgram.exe
,并将命令行传递/arg1 /arg2 [filename.xyz]
给程序以运行它。
.ulaw
文件sox
。请注意,除了删除旧应用程序之外,我还删除HKEY_CLASSES_ROOT\.ulaw
了正在定义文件类型的文件。
assoc
和ftype
是旧命令。它们没有更新为Windows XP,7和8中添加的文件关联扩展名。它们仅修改了系统键“ HKLM \ Software \ Classes”下的文件关联和ProgId键。它们不会读取或修改优先级较高的按用户HKCU设置,也不会读取或修改较新的子项(例如“ Applications”和“ SystemFileAssociations”)或“ RegisteredApplications”中的按应用程序功能项。他们也不会在“ HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts”下阅读或修改用户的选择。
提出问题的人报告“最佳答案”实际上不起作用。
我已经为XP找到了解决方案,它可能适用于以后的OS。
在cmd提示符下,您需要两个命令:assoc
,ftype
。
这两个可以显示关联的内容,然后编辑关联,但是有一个转折,MS指令似乎错误/不完整。通知我的原因是,已知的资深应用程序发现了未记录的关联样式,为什么?
此示例使许多参数可以传递给关联程序。
ftype name_of_assoc="C\blah\aprog.exe" "%1" "%*"
不是错字"%1" "%*"
。没有前面的百分比1,百分比星将不起作用。
这样即刻生效,无需注销等。
正确完成后,会将3传递给arg []
myfile.wotsit file1 file2 file3
尚未完成,但如果程序需要标志,则以下外部引号似乎会传递-m。
ftype name_of_assoc="C\blah\aprog.exe" -m "%1" "%*"
%1 %*
无需引号!该死的窗户
我在Windows7的PSP的较旧版本中遇到了类似的问题
此解决方案(更改注册表中的shell \ open \命令行)有效,但必须具有语法“ C:\ MyFolderName \ PSP.EXE”%1周围无引号%1,否则它将被解释为常量
不是最好的解决方案,但最简单的解决方案是使用批处理文件。
这样创建一个bat文件,并将其默认程序设置为该文件的扩展名。是的,启动后必须使用空引号:
{app name} .bat
start "" "{app path}" %1 /edit
例:
BCompareEdit.bat
start "" "C:\Program Files\Beyond Compare 4\BCompare.exe" %1 /edit
制作Windows快捷方式并使用以下模板:
"C:\Windows\system32\mspaint.exe" "c:\data\basejpg.jpg" %1
xyz.jpg
?