首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取本地化文件(资源)名称,如Windows资源管理器中所示

获取本地化文件(资源)名称,如Windows资源管理器中所示
EN

Stack Overflow用户
提问于 2022-06-21 14:31:05
回答 2查看 135关注 0票数 1

我正在寻找一个PowerShell函数,如Get-LocalizedName($FilePath),返回文件的本地化名称或它的文件名,如果它不是本地化的。我知道本地化的名称存储在各个desktop.ini文件的desktop.ini部分,但通常作为资源文件指针而不是清除名称。

示例:对于管理工具文件夹和locale de-DE,我希望使用清晰的名称而不是@%SystemRoot%\system32\shell32.dll,-21762

我无法找到这样的函数,也没有成功地分析Get-ChildItem或google关于解决方案的属性。

我可以从PowerShell (v7)中使用这样的函数吗?

EN

回答 2

Stack Overflow用户

发布于 2022-06-21 15:17:13

以下解决方案仅适用于文件夹。有关通过this answerLocalizedFileNames部分本地化的文件的解决方案,请参见Desktop.ini

这可以使用Shell.Application COM对象来完成:

代码语言:javascript
复制
$shell = New-Object -ComObject Shell.Application

# Get full path to the admin tools folder
$adminToolsPath = [Environment]::GetFolderPath('AdminTools')

# Get the shell folder corresponding to this path
if( $folder = $shell.NameSpace( $adminToolsPath ) ) {
    $folder.Title  # Output localized title
}

# Alternative:
if( $folder = $shell.NameSpace( [Environment+SpecialFolder]::AdminTools ) ) {
    $folder.Title  # Output localized title
}

票数 1
EN

Stack Overflow用户

发布于 2022-06-22 08:00:54

我终于找到了一种解决方案,用于Get-LocalizedName,使用GetDetailsOf挖掘20年前的VBS代码:

代码语言:javascript
复制
function Get-LocalizedName {
    Param([Parameter(Mandatory=$True)][string]$FilePath) 
    $ChildObj = Get-ChildItem $FilePath 
    $FldrName = $ChildObj.DirectoryName 
    $FileName = $ChildObj.Name 
    $Shell    = New-Object -ComObject Shell.Application 
    $Folder   = $Shell.Namespace($FldrName) 
    $File     = $Folder.ParseName($FileName) 
    return $($Folder.GetDetailsOf($File,0))
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72702610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档