Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何编写接受文件名并返回文件描述类型的函数?_Powershell - Fatal编程技术网

Powershell 如何编写接受文件名并返回文件描述类型的函数?

Powershell 如何编写接受文件名并返回文件描述类型的函数?,powershell,Powershell,如何在Powershell中编写接受文件名并返回文件描述类型的函数 基本上,我想创建一个名为Get FileType的新函数,其中接受一个文件名Get FileType MyFile,并返回文件类型,如.txt。到目前为止,我必须键入MyFile.txt,才能返回扩展名 如果注册表不包含信息,那么我希望它返回一个包含“File”的字符串。如果接受的文件是“myfile.txt”,我希望输出“textfile”的格式 到目前为止,我有一个: `函数Get FileType([string]$fil

如何在Powershell中编写接受文件名并返回文件描述类型的函数

基本上,我想创建一个名为
Get FileType
的新函数,其中接受一个文件名
Get FileType MyFile
,并返回文件类型,如
.txt
。到目前为止,我必须键入
MyFile.txt
,才能返回扩展名

如果注册表不包含信息,那么我希望它返回一个包含
“File”
的字符串。如果接受的文件是“myfile.txt”,我希望输出“textfile”的格式

到目前为止,我有一个:
`函数Get FileType([string]$fileName=”“) { $extension=[System.IO.Path]::GetExtension($filename)

}`


我仍然被困住了……

我不确定我是否完全理解了你的要求,但我还是有一些建议:

  • 要获取精确文件的扩展名,需要使用以下命令:
    $extension=[System.IO.Path]::GetExtension($filename)
  • 我不知道你所说的“描述性类型”是什么意思。在我的注册表中,当我查看键
    HKLM:\Software\Classes\$extension
    时,最常用的两个值是“内容类型”和“感知类型”
  • 如果要获取这些值之一,例如“内容类型”,则可以执行以下操作:

    function Get-FileType ([string]$fileName = " "){ 
        $extension = [System.IO.Path]::GetExtension($filename) 
        $item = Get-Item HKLM:\Software\Classes\$extension
        $item.GetValue("Content Type")
    }
    

    然后,您需要添加一些控件来检查文件是否没有扩展名,或者注册表项是否存在,或者可能会出现一些错误…

    根据您对所需内容的描述,输入:文件名(例如“myfile.txt”)、输出:扩展名(例如“.txt”),您只需使用
    [System.IO.Path]::GetExtension方法。调用
    [System.IO.Path]:GetExtension(“myfile.txt”)
    将返回“.txt”。谢谢gruntzy。这是否意味着如果要执行
    Get FileType myfile.txt
    ,它将返回
    txt
    ?我试图创建一个函数来获取用户输入的文件的扩展名。get-FileType myfile.txt实际上会返回类似“text/plain”的内容。如果您只想获取文件扩展名,那么
    [System.IO.Path]::GetExtension($filename)
    就足够了
    function Get-FileType ([string]$fileName = " "){ 
        $extension = [System.IO.Path]::GetExtension($filename) 
        $item = Get-Item HKLM:\Software\Classes\$extension
        $item.GetValue("Content Type")
    }