PowerShell实现查询打开某个文件的默认应用程序

yizhihongxing

要使用PowerShell实现查询打开某个文件的默认应用程序,可以按照以下步骤:

1.获取文件类型关联

首先需要获取该文件类型的关联程序,可以使用以下命令:

$ext = ".txt"
$key = "HKEY_CLASSES_ROOT\$ext"
$default = (Get-ItemProperty -Path "$key\Shell\Open\Command").'(default)'

上述代码中,我们首先指定文件的扩展名为.txt,然后使用$key变量获取该扩展名对应的注册表项。利用PowerShell的Get-ItemProperty命令,我们可以获取到该注册表项下的Shell\Open\Command子项,并且通过(default)的方式访问该子项的默认值。

2.解析关联程序

接下来需要解析出关联应用程序的路径,可以使用以下命令:

$command = $default -replace ('^.*(?="|'')|".*$|'') # 去除引号
$commandArgs = $command -split " (?=(?:[^""]|""[^""]*"")*$)" # 划分参数
$appPath = $commandArgs[0]

上述代码中,我们使用了一个正则表达式的方式,去掉了关联应用程序路径中的双引号(如果存在的话)。然后,我们使用-split命令将关联应用程序及其参数划分为不同的数组元素。

示例一:查找txt文件默认应用程序

通过上述步骤,我们得到了txt文件的默认应用程序路径,可以使用以下命令将结果输出出来:

$ext = ".txt"
$key = "HKEY_CLASSES_ROOT\$ext"
$default = (Get-ItemProperty -Path "$key\Shell\Open\Command").'(default)'
$command = $default -replace ('^.*(?="|'')|".*$|'')
$commandArgs = $command -split " (?=(?:[^""]|""[^""]*"")*$)"
$appPath = $commandArgs[0]

Write-Output "文件类型 $ext 的默认应用程序为:$appPath"

运行上述代码后,我们会得到如下输出:

文件类型 .txt 的默认应用程序为:C:\WINDOWS\system32\NOTEPAD.EXE

表示txt文件的默认应用程序是Windows自带的记事本。

示例二:查找jpg文件默认应用程序

如果我们要查找jpg文件的默认应用程序,只需要修改上述代码中的文件扩展名即可:

$ext = ".jpg"
$key = "HKEY_CLASSES_ROOT\$ext"
$default = (Get-ItemProperty -Path "$key\Shell\Open\Command").'(default)'
$command = $default -replace ('^.*(?="|'')|".*$|'')
$commandArgs = $command -split " (?=(?:[^""]|""[^""]*"")*$)"
$appPath = $commandArgs[0]

Write-Output "文件类型 $ext 的默认应用程序为:$appPath"

运行上述代码后,我们会得到如下输出:

文件类型 .jpg 的默认应用程序为:C:\Program Files\Windows Photo Viewer\PhotoViewer.dll

表示jpg文件的默认应用程序是Windows自带的照片查看器。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PowerShell实现查询打开某个文件的默认应用程序 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • C#教程(1) — .Net与C#简介

    C#教程(1)–.Net与C#简介的完整攻略 本文将为您提供C#教程(1)–.Net与C#简介的完整攻略,包括.Net和C#的定义、.Net和C#的关系、C#的特点、C#的开发环境、C#的示例说明等内容。 .Net和C#的定义 .Net是一个由微软公司开发的软件框架,用于开发和运行各种类型的应用程序。.Net框架包括一个运行时环境、一个类库和一组工具,可…

    other 2023年5月6日
    00
  • Java 向上转型和向下转型的详解

    Java 向上转型和向下转型的详解 什么是向上转型? Java 中向上转型(Upcasting)是指将子类对象转换成父类对象,这样可以在使用父类对象的地方使用子类对象。向上转型可以提高代码的灵活性与扩展性,常用于多态中。 示例代码: public class Animal { public void eat() { System.out.println(&q…

    other 2023年6月26日
    00
  • VUE递归树形实现多级列表

    下面是“VUE递归树形实现多级列表”的完整攻略。 1. 理解递归树形结构 递归树形结构,是指一个树形结构中包含了许多子树,而每个子树中又可能包含有更多的子树,这样的结构就可以使用递归来描述。 2. 实现递归组件 在 Vue 中实现递归树形结构,需要定义一个递归组件。递归组件是指在组件的模板中再次使用相同的组件,从而形成递归结构。 假设我们要实现一个无限级列表…

    other 2023年6月27日
    00
  • c语言将字符串中的小写字母转换成大写字母

    C语言将字符串中的小写字母转换成大写字母攻略 在C语言中,可以使用标准库函数toupper()将字符串中的小写字母转换成大写字母。下面是一个详细的攻略,包含两个示例说明。 步骤1:包含头文件 首先,需要包含头文件<ctype.h>,该头文件中包含了toupper()函数的声明。 #include <ctype.h> 步骤2:定义字符串…

    other 2023年8月16日
    00
  • 如何分析hprof文件

    如何分析hprof文件 背景 hprof文件是Java虚拟机(JVM)生成的一种堆转储文件(heap dump),它记录了 JVM 中各个对象在堆中的分布情况以及各个对象的属性情况。在排除Java应用程序内存问题时,hprof文件是一个重要的工具。本文将探讨如何分析hprof文件以解决Java应用程序的内存问题。 步骤 1. 生成hprof文件 在Java应…

    其他 2023年3月28日
    00
  • java虚拟机JVM类加载机制原理(面试必问)

    Java虚拟机(JVM)类加载机制原理详解 Java虚拟机(JVM)类加载机制是Java语言特性的重要组成部分,它将Java类文件加载到内存中并最终转化为在Java虚拟机中可执行的机器指令。本文将介绍Java虚拟机(JVM)类加载机制的原理和流程,并给出两个示例。 类加载机制的步骤 Java虚拟机(JVM)类加载机制的步骤分为加载、验证、准备、解析和初始化五…

    other 2023年6月20日
    00
  • 详解angular中的作用域及继承

    详解Angular中的作用域及继承 在Angular中,作用域(Scope)是一个非常重要的概念,它定义了变量和函数的可见性和访问性。作用域可以嵌套,形成一个层级结构,并且可以通过继承的方式传递数据和行为。 作用域的类型 在Angular中,有三种类型的作用域:根作用域($rootScope)、控制器作用域($scope)和隔离作用域(isolate sco…

    other 2023年8月19日
    00
  • 协方差自适应调整的进化策略(cma-es)转载自知乎

    协方差自适应调整的进化策略(CMA-ES) 协方差自适应调整的进化策略(CMA-ES)是一种优化算法,用于解决连续优化问题。它是种基自然进化的算法,通过模拟生物进化的过程来寻找最优解。本文将转载自知乎,详细讲CMA-ES算法的原理、实现和应用。 原理 CMA-ES算法核心思想是通过不断地调整空间的协方差矩阵来适应问题特征,从而实现更加高效的搜索。具体来说,C…

    other 2023年5月8日
    00
合作推广
合作推广
分享本页
返回顶部