powershell - PowerShell - 如何将以下脚本放在一起+调整页眉和页脚
问题描述
这是我目前正在处理的 Word 文档脚本示例脚本更改了所有文件中的一个单词,但 **** 不会更改部分文件名和标题和页脚
$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") }
我怎样才能把所有东西放在一起?谢谢
解决方案
最后一个代码段超出了您在 word 中所做的工作。所以,当你说结合时,就像你已经在做的那样:
您不是在说/显示您从最后一个代码段中得到的错误。
尝试重命名文件时,您必须使用完整的文件名,其中包括该文件的路径,就像您在词段中所做的那样。
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 即可让它真正运行。
推荐阅读
- django - Atom 文本编辑器终端无法正常工作
- javascript - 如何使用节点 js 从包 json 文件更新脚本
- mysql - 链接到 MySQL 的服务。使用 ICU 使用源编码 UTF-8 转换无效输入时出错
- reactjs - 如何在反应中显示 API 错误句柄?
- ambiguous-grammar - 下面的语法是否有歧义,如果是下面的明确语法是什么
- java - 如何将 EditText 值转换为整数
- opencv - 查找形状内没有负区域的轮廓
- c++ - 使用旋转函数旋转整个数组
- python - 如何将过滤后的字符串附加到 Python 中的新列表?
- django - 无法通过 ubuntu18.04 中的 url 连接到 mongodb