varios subcarpetas renombrar por nombres nombre modificar masivo lotes extension crear cambiar archivos archivo file powershell versioninfo

file - por - renombrar archivos en subcarpetas



Obtener la versiĆ³n del archivo en PowerShell (10)

''dir'' es un alias para Get-ChildItem que devolverá una clase System.IO.FileInfo cuando lo está llamando desde el sistema de archivos que tiene VersionInfo como una propiedad. Asi que ...

Para obtener la información de versión de un solo archivo, haga esto:

PS C:/Windows> (dir ./write.exe).VersionInfo | fl OriginalFilename : write FileDescription : Windows Write ProductName : Microsoft® Windows® Operating System Comments : CompanyName : Microsoft Corporation FileName : C:/Windows/write.exe FileVersion : 6.1.7600.16385 (win7_rtm.090713-1255) ProductVersion : 6.1.7600.16385 IsDebug : False IsPatched : False IsPreRelease : False IsPrivateBuild : False IsSpecialBuild : False Language : English (United States) LegalCopyright : © Microsoft Corporation. All rights reserved. LegalTrademarks : PrivateBuild : SpecialBuild :

Para múltiples archivos esto:

PS C:/Windows> dir *.exe | %{ $_.VersionInfo } ProductVersion FileVersion FileName -------------- ----------- -------- 6.1.7600.16385 6.1.7600.1638... C:/Windows/bfsvc.exe 6.1.7600.16385 6.1.7600.1638... C:/Windows/explorer.exe 6.1.7600.16385 6.1.7600.1638... C:/Windows/fveupdate.exe 6.1.7600.16385 6.1.7600.1638... C:/Windows/HelpPane.exe 6.1.7600.16385 6.1.7600.1638... C:/Windows/hh.exe 6.1.7600.16385 6.1.7600.1638... C:/Windows/notepad.exe 6.1.7600.16385 6.1.7600.1638... C:/Windows/regedit.exe 6.1.7600.16385 6.1.7600.1638... C:/Windows/splwow64.exe 1,7,0,0 1,7,0,0 C:/Windows/twunk_16.exe 1,7,1,0 1,7,1,0 C:/Windows/twunk_32.exe 6.1.7600.16385 6.1.7600.1638... C:/Windows/winhlp32.exe 6.1.7600.16385 6.1.7600.1638... C:/Windows/write.exe

¿Cómo puede obtener la información de la versión de un archivo .dll o .exe en PowerShell?

Estoy específicamente interesado en la File Version , aunque también sería útil otra información de la versión (es decir, Company , Language , Product Name , etc.).


Aquí un método alternativo. Utiliza Get-WmiObject CIM_DATAFILE para seleccionar la versión.

(Get-WmiObject -Class CIM_DataFile -Filter "Name=''C://Windows//explorer.exe''" | Select-Object Version).Version


Como dijo EBGreen, [System.Diagnostics.FileVersionInfo] :: GetVersionInfo (ruta) funcionará, pero recuerde que también puede obtener todos los miembros de FileVersionInfo, por ejemplo:

[System.Diagnostics.FileVersionInfo]::GetVersionInfo(path).CompanyName

Debería poder usar todos los miembros de FileVersionInfo documentados aquí, lo que básicamente le proporcionará todo lo que pueda desear sobre el archivo.


Dado que PowerShell puede llamar a clases .NET , puede hacer lo siguiente:

[System.Diagnostics.FileVersionInfo]::GetVersionInfo("somefilepath").FileVersion

O como se indica aquí en una lista de archivos:

get-childitem * -include *.dll,*.exe | foreach-object { "{0}`t{1}" -f $_.Name, [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_).FileVersion }

O incluso mejor como script: http://jtruher.spaces.live.com/blog/cns!7143DA6E51A2628D!125.entry


Encuentro esto útil:

function Get-Version($filePath) { $name = @{Name="Name";Expression= {split-path -leaf $_.FileName}} $path = @{Name="Path";Expression= {split-path $_.FileName}} dir -recurse -path $filePath | % { if ($_.Name -match "(.*dll|.*exe)$") {$_.VersionInfo}} | select FileVersion, $name, $path }


Esto se basa en las otras respuestas, pero es exactamente lo que estaba buscando:

(Get-Command C:/Path/YourFile.Dll).FileVersionInfo.FileVersion


Hoy en día puede obtener FileVersionInfo de Get-Item o Get-ChildItem, pero mostrará FileVersion original del producto enviado, y no la versión actualizada. Por ejemplo:

(Get-Item C:/Windows/System32/Lsasrv.dll).VersionInfo.FileVersion

Curiosamente, puede obtener la versión de producto actualizada (parcheada) al usar esto:

(Get-Command C:/Windows/System32/Lsasrv.dll).Version

Tenga en cuenta que con un archivo como lsasrv (que se reemplazó debido a problemas de seguridad en SSL / TLS / RDS en noviembre de 2014), las versiones informadas por estos dos comandos son diferentes y la segunda es la correcta.

Sin embargo, aunque es correcto en LSASrv, es posible que ProductVersion y FileVersion sean diferentes (es común, de hecho). Entonces, la única manera de obtener la versión de archivo actualizada es crearla usted mismo, algo como esto:

Get-Item C:/Windows/System32/Lsasrv.dll | ft FileName, File*Part

O más bien, así:

Update-TypeData -TypeName System.IO.FileInfo -MemberName FileVersion -MemberType ScriptProperty -Value { [System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName) | % { [Version](($_.FileMajorPart, $_.FileMinorPart, $_.FileBuildPart, $_.FilePrivatePart)-join".") } }

Ahora, cada vez que realice Get-ChildItem o Get-Item , tendrá una propiedad FileVersion que muestra la FileVersion actualizada ...


Otra forma de hacerlo es usar la técnica de acceso a archivos incorporada:

(get-item ./filename.exe).VersionInfo | FL

También puede obtener cualquier propiedad particular de VersionInfo, por lo tanto:

(get-item ./filename.exe).VersionInfo.FileVersion

Esto es bastante cercano a la técnica dir.


Prefiero instalar las extensiones de comunidad de PowerShell y simplemente uso la función Get-FileVersionInfo que proporciona.

Al igual que:

Get-FileVersionInfo MyAssembly.dll

con salida como:

ProductVersion FileVersion FileName -------------- ----------- -------- 1.0.2907.18095 1.0.2907.18095 C:/Path/To/MyAssembly.dll

Lo he usado contra un directorio completo de ensamblajes con gran éxito.


[System.Diagnostics.FileVersionInfo]::GetVersionInfo("Path/To/File.dll")