Utilizando este script de PowerShell:
(encontrado aquí: http://blogs.technet.com/b/heyscriptingguy/archive/2012/08/02/use-powershell-to-find-specific-word-built-in-properties.aspx )
Edit2: Edite el script para que coincida con su escenario específico.
Param(
$path = "Q:\Test",
[array]$include = @("*.docx","*.docx")
)
$application = New-Object -ComObject word.application
$application.Visible = $false
$binding = "System.Reflection.BindingFlags" -as [type]
[ref]$SaveOption = "microsoft.office.interop.word.WdSaveOptions" -as [type]
## Get documents
$docs = Get-childitem -path $Path -Recurse -Include $include #Remove -Recurse if you dont want to include subfolders.
## Iterate documents
foreach($doc in $docs)
{
try
{
## Get document properties:
$document = $application.documents.open($doc.fullname)
$BuiltinProperties = $document.BuiltInDocumentProperties
$pn = [System.__ComObject].invokemember("item",$binding::GetProperty,$null,$BuiltinProperties,"Creation Date")
$value = [System.__ComObject].invokemember("value",$binding::GetProperty,$null,$pn,$null)
## Clean up
$document.close([ref]$saveOption::wdDoNotSaveChanges)
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($BuiltinProperties) | Out-Null
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($document) | Out-Null
Remove-Variable -Name document, BuiltinProperties
## Rename document:
if($doc.PSChildName -match "^(.+)(\d{3})(.+)$") # Matches "(Summary meeting )(123)(.doc)"
{
$date=$value.ToString('yyyy-MM-dd');
$newName = "$($matches[2]) $($date) $($matches[1])$($matches[2])$($matches[3])";
write-host $newName;
Rename-Item $doc $newName
}
}
catch
{
write-host "Rename failed."
$_
}
}
## Clean up
$application.quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($application) | Out-Null
Remove-Variable -Name application
[gc]::collect()
[gc]::WaitForPendingFinalizers()
Cambie la variable $ path a la carpeta en la que se encuentren sus documentos.
Edite la sección #Nombre con cualquier lógica adicional que necesite, la expresión regular que he agregado coincide con el ejemplo particular que proporcionó en su publicación, modifíquela para que coincida con todos sus documentos. Se puede hacer referencia a cualquier patrón dentro de (paréntesis) usando la matriz "coincidencias []", comenzando en el índice 1.
Sugeriría comentar la línea "Renombrar-Elemento" hasta que esté seguro de que "$ newName" es correcto. El $ () adicional agregado alrededor de las variables en la línea "$ newName =" - está ahí para que las variables se expandan.
PD: Asegúrese de habilitar la ejecución de los scripts de powershell, abra PS como administrador e ingrese: "Set-ExecutionPolicy RemoteSigned")