在**批处理文件中打开文件**

时间:2018-02-03 11:47:20

标签: windows batch-file

我有一个批处理程序,可用于打开我创建的特定文件格式。文件格式实际上是一个zip文件,.zip更改为.gcif

运行我的btch文件时,有一个输入字段,用于输入要打开的.gcif文件的位置。然后将.gcif重命名为.zip。 7z.exe(与批处理文件位于同一目录中)然后解压缩文件,它由我的批处理文件处理。

但是当用户找到任何.gcif文件,右键单击它并选择Open With我的批处理文件时,我希望它也能正常工作。有没有办法让批处理文件检测到它是否有责任打开该特定文件?

2 个答案:

答案 0 :(得分:1)

我知道了。使用批处理文件打开文件时,文件位置将作为参数传递到批处理文件。然后可以使用%1访问该参数。

例如,如果我在包含以下代码的批处理文件中打开文件C:/document.txt

@ECHO OFF
ECHO %1

输出将显示C:/document.txt

答案 1 :(得分:0)

您可以在系统中注册Windows文件处理程序。

您可能需要管理员权限,可能需要修改注册表。

基本上你是"连接"你的filextension .gcif和你的批处理文件,所以windows知道这个扩展的任何文件都连接到你的批处理文件

您可以在msdn网站上阅读有关它的内容:How to Register a File Type for a New Application

  

如果您打算将一个或多个文件类型与新文件类型相关联   在应用程序中,您必须为所需的每种文件类型定义ProgID   与申请相关联。

     

为您的应用程序的每个唯一文件类型创建一个ProgID   处理,使用这些步骤。

     

说明

     

第1步:请注意,某些文件类型有多个   指向相同ProgID的扩展名;例如:

     

HKEY_CLASSES_ROOT\App.jpeg (your ProgID)
  HKEY_CLASSES_ROOT\.jpg = App.jpeg (the file type mappings)
  HKEY_CLASSES_ROOT\.jpeg = App.jpeg

     

第2步:
  安装和卸载时删除ProgID值   程序

     

第3步:
  在卸载时保持文件类型映射不变。   这样做是有效的,因为每个用户都存储了文件类型映射   HKEY_CLASSES_ROOT.ext,系统标识的情况   ProgID值丢失并忽略它。保留文件类型映射   不变的避免需要只有删除的条件代码   如果值仍指向您的ProgID,则为文件类型映射。它是   重要的是避免在可能已经改变的情况下这样做   通过另一个应用程序,您因此无法轻易删除该值。

     

第4步:
  为每个文件类型描述指定唯一值   文件类型ProgID通过执行以下操作之一:

     

将ProgID的默认值保留为空,在这种情况下为系统   使用.ext文件。通过FriendlyTypeName提供本地化值   并且,为了与读取注册表的旧应用程序兼容   直接,一定要提供ProgID的默认值作为   文件类型描述(即,使用与引用相同的值   通过英语资源中的FriendlyTypeName)。备注如果你有计划   要将文件与现有应用程序关联,请找到   应用程序ProgID在注册表中。

要完成类似的操作,您可以使用资源管理器打开文件一次,然后选择"打开..." - 找到您的批处理文件并选择" 始终使用此应用程序" 复选框打开。

此处的第一个选项更适用于您希望在应用程序在其系统上安装应用程序时为客户提供单击打开体验的时间。