PowerShell - Как собрать следующий скрипт вместе + настроить верхний и нижний колонтитулы - PullRequest
0 голосов
/ 21 ноября 2018

Вот пример скрипта для Word Document, над которым я сейчас работаю. Скрипт меняет слово во всех файлах, но **** не меняет **** часть имени файла.и верхний и нижний колонтитулы

$objWord = New-Object -comobject Word.Application  
$objWord.Visible = $false

$list = Get-ChildItem "C:\Users\*.*" -Include *.doc*
foreach($item in $list){
$objDoc = $objWord.Documents.Open($item.FullName,$true)

$objSelection = $objWord.Selection 
$wdFindContinue = 1
$FindText = "COMPUTER" 
$MatchCase = $False 
$MatchWholeWord = $true
$MatchWildcards = $False 
$MatchSoundsLike = $False 
$MatchAllWordForms = $False 
$Forward = $True 
$Wrap = $wdFindContinue 
$Format = $False 
$wdReplaceNone = 0 
$ReplaceWith = "DESKTOP" 
$wdFindContinue = 1 
$ReplaceAll = 2

$a = $objSelection.Find.Execute($FindText,$MatchCase,$MatchWholeWord, ` 
$MatchWildcards,$MatchSoundsLike,$MatchAllWordForms,$Forward,` 
$Wrap,$Format,$ReplaceWith,$ReplaceAll) 
$objDoc.Save()
$objDoc.Close()
}
$objWord.Quit()

Вот сценарий, чтобы изменить часть имени файла:

PS C:\User> get-childitem | foreach { rename-item $_ $_.Name.Replace("file1", "computer") }

Как я могу собрать все вместе?Спасибо

1 Ответ

0 голосов
/ 28 ноября 2018

Последний сегмент кода находится за пределами того, что вы делаете словом.Итак, когда вы говорите «объединить», это то же самое, что вы уже делаете:

Вы не говорите / не показываете, какую ошибку вы получаете от этого последнего сегмента кода.

При попытке переименовать файлы,Вы должны использовать полное имя файла, включая путь к этому файлу, так же, как вы делали это в сегменте слов.

Get-ChildItem -Path E:\Temp -Filter '*.txt' 

    Directory: E:\Temp

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       11/27/2018   3:51 PM              0 OriginalFileName.txt


Get-ChildItem -Path 'E:\Temp' -Filter '*.txt' | 
ForEach { Rename-Item -Path $_.FullName -NewName ($_.FullName.Replace('Original','New')) -WhatIf }


ForEach { Rename-Item -Path $_.FullName -NewName ($_.FullName.Replace('Original','New')) -WhatIf }
What if: Performing the operation "Rename File" on target "Item: E:\Temp\OriginalFileName.txt Destination: E:\Temp\NewFileName.txt".



Get-ChildItem -Path 'E:\Temp' -Filter '*.txt' | 
ForEach { Rename-Item -Path $_.FullName -NewName ($_.FullName.Replace('Original','New')) }



Get-ChildItem -Path E:\Temp -Filter '*.txt' 


    Directory: E:\Temp

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       11/27/2018   3:51 PM              0 NewFileName.txt


foreach($item in $list)
{
    $objDoc = $objWord.Documents.Open($item.FullName,$true)

    $objSelection = $objWord.Selection 
    $wdFindContinue = 1
    $FindText = "COMPUTER" 
    $MatchCase = $False 
    $MatchWholeWord = $true
    $MatchWildcards = $False 
    $MatchSoundsLike = $False 
    $MatchAllWordForms = $False 
    $Forward = $True 
    $Wrap = $wdFindContinue 
    $Format = $False 
    $wdReplaceNone = 0 
    $ReplaceWith = "DESKTOP" 
    $wdFindContinue = 1 
    $ReplaceAll = 2

    $a = $objSelection.Find.Execute($FindText,$MatchCase,$MatchWholeWord, ` 
    $MatchWildcards,$MatchSoundsLike,$MatchAllWordForms,$Forward,` 
    $Wrap,$Format,$ReplaceWith,$ReplaceAll) 
    $objDoc.Save()
    $objDoc.Close()

    Rename-Item -Path $item.FullName -NewName ($item.FullName.Replace($item.BaseName,$FindText)) -WhatIf
}
$objWord.Quit()

Просто удалите -WhatIf, чтобы он действительно работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...