【问题标题】:Assoc command not working in Windows 7Assoc 命令在 Windows 7 中不起作用
【发布时间】:2014-08-24 14:08:13
【问题描述】:

我需要从命令提示符更改特定文件扩展名的默认关联程序。我拥有的文件扩展名为 .ChangeSetInfo,它基本上是一个 xml 文件。我想将“Xml Notepad 2007”关联为此类扩展的默认程序。为此,我编写了一个小批处理文件。内容如下

assoc .CHANGESETINFO= 
ftype CHANGESETINFO File= 
assoc .CHANGESETINFO=CHANGESETINFO File
ftype CHANGESETINFO File="C:\Program Files\XML Notepad 2007\XmlNotepad.exe"

当我执行此批处理文件时,似乎一切正常,因为我没有收到任何错误消息。但是之后,当我双击扩展名为 .ChangeSetInfo 的文件时,xmlnotepad 程序会启动,但文件没有打开。但是,如果我使用 Xml 记事本窗口中的“文件打开”选项,该文件会正确显示。

有人可以帮我解决这个问题吗?

我正在使用 Windows 7 Professional Service Pack 1。我还在此系统上使用管理员帐户。

【问题讨论】:

    标签: batch-file windows-7 command-prompt


    【解决方案1】:

    如果您在系统上使用assoc .doc,它应该返回类似Word.Document.8 的内容。输入 ftype Word.Document.8 会产生类似

    Word.Document.12="C:\Program Files (x86)\Microsoft Office\Office15\WINWORD.EXE" /n "%1" /o /o "%u"
    

    “%1”表示它应该打开作为命令行第一个参数传递的文件。它周围的引号确保该文件名中的任何嵌入空格都不会被解释为命令分隔符。

    因此,您的问题的解决方案是更改 ftype 语句以执行相同的操作:

    ftype CHANGESETINFO File="C:\Program Files\XML Notepad 2007\XmlNotepad.exe" "%1"
    

    作为说明:如果是我,我会将assocftype 都更改为使用ChangeSetInfoFile,因为它更易于阅读并删除“CHANGESETINFO”和“文件”之间的嵌入空格.

    【讨论】:

    • 感谢您的回复。是的,您是对的,我需要添加“%1”参数才能使命令正常工作。但我还想补充一点,批处理文件不允许添加“%1”。之后在注册表中显示“”。所以我放弃了使用 .bat 文件的想法,目前我直接在 cmd.exe 中执行命令,现在对我来说工作正常。无论如何,非常感谢您的回复。这真的很有帮助。
    • 谢谢,参数两边的双引号是关键。
    • 我会使用"%~1" 删除任何可能存在的引号以避免引用两次。 (来自Octaviour,他没有足够的代表来添加评论):用于批处理文件,将% 与另一个% 一起转义:"%%1"
    猜你喜欢
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2017-05-02
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多