使用PowerShell编辑文件的元数据(Windows文件资源管理器中文件的“详细信息”选项卡)

mwkjh3gx  于 2023-01-05  发布在  Shell
关注(0)|答案(2)|浏览(153)

我想编辑文件的“注解”字段。
我看到了几个如何读取文件元数据的示例,但没有看到如何编辑文件元数据?

ni65a41a

ni65a41a1#

  • 根据this forum thread判断,**您只能通过Windows(GUI)shell(Shell.Application COM API)**读取 * 此类 * 扩展文档属性 * -请参见下一节。
    *对于通过.NET / PowerShell 更新 (编辑)属性
    *非官方的第三方NuGet包是Windows API周围的.NET Package 器,可以提供一个解决方案,如this C# answer中所示。请注意,many variations of these packages ( Microsoft.WindowsAPICodePack.* ) exist in the NuGet gallery具有许多早期包的分支,似乎已被废弃。this repo是一个似乎仍在维护的分支的示例。
    对于 * 图像文件,虽然更新属性需要变通方法,但标准.NET API * 确实 * 存在:参见System.Drawing.Image.GetPropertyItem
  • 否则,您必须使用 * 特定于应用程序的 * API,例如Microsoft Office应用程序的各种COM库;例如New-Object -ComObject Word.Application; this documentation可以提供进一步的信息。
  • 请注意,如果为给定文档类型(如Microsoft Word *.docx文件)安装了文件资源管理器扩展,则可以通过文件资源管理器中的“属性”对话框 * 交互地 修改 * -但不能 * 添加 * -属性。
    *以编程方式阅读 * 文档属性
$file = 'C:\path\to\some\file.doc' 

# The index of the property to retrieve.
$propIndex = 24  # Comments

$folder = (New-Object -ComObject Shell.Application).NameSpace((Split-Path $file))

# Output the value of the "Comments" property.
$folder.GetDetailsOf(
  $folder.ParseName((Split-Path -Leaf $file)),
  24
)

注意,所有属性值都以 * 字符串 * 的形式返回,如果目标属性没有填充,则返回 * 空字符串 *('');尝试将0(文件名)作为标准属性,以验证调用原则上是否有效。
下面的代码查找所有支持的属性名称的索引

$folder = (New-Object -ComObject Shell.Application).NameSpace("$pwd")
# Note: Assumes that no indices higher than 1000 exist.
0..1000 | % { 
  if ($n = $folder.GetDetailsOf($null, $_)) { 
    [pscustomobject] @{ Index = $_; Name = $n } 
  } 
}

在我的Windows 10计算机上,这将生成:

Index Name                       
----- ----                       
    0 Name                       
    1 Size                       
    2 Item type                  
    3 Date modified              
    4 Date created               
    5 Date accessed              
    6 Attributes                 
    7 Offline status             
    8 Availability               
    9 Perceived type             
   10 Owner                      
   11 Kind                       
   12 Date taken                 
   13 Contributing artists       
   14 Album                      
   15 Year                       
   16 Genre                      
   17 Conductors                 
   18 Tags                       
   19 Rating                     
   20 Authors                    
   21 Title                      
   22 Subject                    
   23 Categories                 
   24 Comments                   
   25 Copyright                  
   26 #                          
   27 Length                     
   28 Bit rate                   
   29 Protected                  
   30 Camera model               
   31 Dimensions                 
   32 Camera maker               
   33 Company                    
   34 File description           
   35 Masters keywords           
   36 Masters keywords           
   42 Program name               
   43 Duration                   
   44 Is online                  
   45 Is recurring               
   46 Location                   
   47 Optional attendee addresses
   48 Optional attendees         
   49 Organizer address          
   50 Organizer name             
   51 Reminder time              
   52 Required attendee addresses
   53 Required attendees         
   54 Resources                  
   55 Meeting status             
   56 Free/busy status           
   57 Total size                 
   58 Account name               
   60 Task status                
   61 Computer                   
   62 Anniversary                
   63 Assistant's name           
   64 Assistant's phone          
   65 Birthday                   
   66 Business address           
   67 Business city              
   68 Business country/region    
   69 Business P.O. box          
   70 Business postal code       
   71 Business state or province 
   72 Business street            
   73 Business fax               
   74 Business home page         
   75 Business phone             
   76 Callback number            
   77 Car phone                  
   78 Children                   
   79 Company main phone         
   80 Department                 
   81 E-mail address             
   82 E-mail2                    
   83 E-mail3                    
   84 E-mail list                
   85 E-mail display name        
   86 File as                    
   87 First name                 
   88 Full name                  
   89 Gender                     
   90 Given name                 
   91 Hobbies                    
   92 Home address               
   93 Home city                  
   94 Home country/region        
   95 Home P.O. box              
   96 Home postal code           
   97 Home state or province     
   98 Home street                
   99 Home fax                   
  100 Home phone                 
  101 IM addresses               
  102 Initials                   
  103 Job title                  
  104 Label                      
  105 Last name                  
  106 Mailing address            
  107 Middle name                
  108 Cell phone                 
  109 Nickname                   
  110 Office location            
  111 Other address              
  112 Other city                 
  113 Other country/region       
  114 Other P.O. box             
  115 Other postal code          
  116 Other state or province    
  117 Other street               
  118 Pager                      
  119 Personal title             
  120 City                       
  121 Country/region             
  122 P.O. box                   
  123 Postal code                
  124 State or province          
  125 Street                     
  126 Primary e-mail             
  127 Primary phone              
  128 Profession                 
  129 Spouse/Partner             
  130 Suffix                     
  131 TTY/TTD phone              
  132 Telex                      
  133 Webpage                    
  134 Content status             
  135 Content type               
  136 Date acquired              
  137 Date archived              
  138 Date completed             
  139 Device category            
  140 Connected                  
  141 Discovery method           
  142 Friendly name              
  143 Local computer             
  144 Manufacturer               
  145 Model                      
  146 Paired                     
  147 Classification             
  148 Status                     
  149 Status                     
  150 Client ID                  
  151 Contributors               
  152 Content created            
  153 Last printed               
  154 Date last saved            
  155 Division                   
  156 Document ID                
  157 Pages                      
  158 Slides                     
  159 Total editing time         
  160 Word count                 
  161 Due date                   
  162 End date                   
  163 File count                 
  164 File extension             
  165 Filename                   
  166 File version               
  167 Flag color                 
  168 Flag status                
  169 Space free                 
  172 Group                      
  173 Sharing type               
  174 Bit depth                  
  175 Horizontal resolution      
  176 Width                      
  177 Vertical resolution        
  178 Height                     
  179 Importance                 
  180 Is attachment              
  181 Is deleted                 
  182 Encryption status          
  183 Has flag                   
  184 Is completed               
  185 Incomplete                 
  186 Read status                
  187 Shared                     
  188 Creators                   
  189 Date                       
  190 Folder name                
  191 Folder path                
  192 Folder                     
  193 Participants               
  194 Path                       
  195 By location                
  196 Type                       
  197 Contact names              
  198 Entry type                 
  199 Language                   
  200 Date visited               
  201 Description                
  202 Link status                
  203 Link target                
  204 URL                        
  208 Media created              
  209 Date released              
  210 Encoded by                 
  211 Episode number             
  212 Producers                  
  213 Publisher                  
  214 Season number              
  215 Subtitle                   
  216 User web URL               
  217 Writers                    
  219 Attachments                
  220 Bcc addresses              
  221 Bcc                        
  222 Cc addresses               
  223 Cc                         
  224 Conversation ID            
  225 Date received              
  226 Date sent                  
  227 From addresses             
  228 From                       
  229 Has attachments            
  230 Sender address             
  231 Sender name                
  232 Store                      
  233 To addresses               
  234 To do title                
  235 To                         
  236 Mileage                    
  237 Album artist               
  238 Sort album artist          
  239 Album ID                   
  240 Sort album                 
  241 Sort contributing artists  
  242 Beats-per-minute           
  243 Composers                  
  244 Sort composer              
  245 Disc                       
  246 Initial key                
  247 Part of a compilation      
  248 Mood                       
  249 Part of set                
  250 Period                     
  251 Color                      
  252 Parental rating            
  253 Parental rating reason     
  254 Space used                 
  255 EXIF version               
  256 Event                      
  257 Exposure bias              
  258 Exposure program           
  259 Exposure time              
  260 F-stop                     
  261 Flash mode                 
  262 Focal length               
  263 35mm focal length          
  264 ISO speed                  
  265 Lens maker                 
  266 Lens model                 
  267 Light source               
  268 Max aperture               
  269 Metering mode              
  270 Orientation                
  271 People                     
  272 Program mode               
  273 Saturation                 
  274 Subject distance           
  275 White balance              
  276 Priority                   
  277 Project                    
  278 Channel number             
  279 Episode name               
  280 Closed captioning          
  281 Rerun                      
  282 SAP                        
  283 Broadcast date             
  284 Program description        
  285 Recording time             
  286 Station call sign          
  287 Station name               
  288 Summary                    
  289 Snippets                   
  290 Auto summary               
  291 Relevance                  
  292 File ownership             
  293 Sensitivity                
  294 Shared with                
  295 Sharing status             
  297 Product name               
  298 Product version            
  299 Support link               
  300 Source                     
  301 Start date                 
  302 Sharing                    
  303 Availability status        
  304 Status                     
  305 Billing information        
  306 Complete                   
  307 Task owner                 
  308 Sort title                 
  309 Total file size            
  310 Legal trademarks           
  311 Video compression          
  312 Directors                  
  313 Data rate                  
  314 Frame height               
  315 Frame rate                 
  316 Frame width                
  317 Spherical                  
  318 Stereo                     
  319 Video orientation          
  320 Total bitrate
yr9zkbsy

yr9zkbsy2#

在我的脑海中,我认为您可能可以通过使用COM对象来完成它

$myFileObj = Get-Item -Path "C:\path\to\file"

$shellCom = New-Object -ComObject Shell.Application

$sDirectory = $shellCom.NameSpace($myFileObj.Directory.FullName)

$sFile = $sDirectory.ParseName($myFileObj.Name)

现在在$sFile对象上执行Get-Member,所以$sFile | Get-Member。如果您看到属性Comments有一个setter,您应该能够更改它。它将在Definition下有{get} {set}。设置它应该像$sFile.Comments = "blah blah blah"一样简单

相关问题