【问题标题】:Replace Multiple words in MSWord using Powershell使用 Powershell 替换 MSWord 中的多个单词
【发布时间】:2017-04-27 03:59:22
【问题描述】:

我正在尝试使用 powershell 替换 word 文档中的多行,而无需在每次更改后保存并关闭。现在我有:

 $objWord = New-Object -comobject Word.Application  
    function findAndReplace
    {
        $objDoc = $objWord.Documents.Open("C:\temp\test.docx")
        $objWord.Visible = $false
        $objSelection = $objWord.Selection
        $a = $objSelection.Find.Execute($FindText, $false, $true, $False, $False, $False, $true, 1, $False, $ReplaceWith)
        $objDoc.Save()
        $objDoc.close()

    }

    ############DEVICE DETAILS#############
    $FindText = "USERID"
    $ReplaceWith = $AssociateIDnum
    findAndReplace
    $FindText = "CONTACTNUMBER"
    $ReplaceWith = $Phone
    findAndReplace

使用它,我创建了运行这些命令的函数,并在每个新单词实例上更改 $findtext 和 $replacetext,然后每次运行该函数。

使用此方法,Word Doc 会打开和关闭近 25 次,以编写每个新词替换。

有没有办法可以创建一个函数或循环来改变 $findtext 并且每次都使用 $replacewith 变量?

我对 powershell 比较陌生,但我一直在自学其中一些。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    尝试使用对象列表作为函数的参数,类似这样:

    $objWord = New-Object -comobject Word.Application  
        function findAndReplace ($todoObjs)
        {
            $objDoc = $objWord.Documents.Open("C:\temp\test.docx")
            $objWord.Visible = $false
            $objSelection = $objWord.Selection
            foreach ($todoObj in $todoObjs)
            {
              $a = $objSelection.Find.Execute($($todoObj.FIND), $false, $true, $False, $False, $False, $true, 1, $False, $($todoObj.REPLACE))
            }
            $objDoc.Save()
            $objDoc.close()
    
        }
    
        ############DEVICE DETAILS#############
    $todo = @"
    FIND,REPLACE
    toto,titi
    tutu,tata
    "@
    
    $todoObjs = ConvertFrom-Csv $todo
    findAndReplace $todoObjs
    

    【讨论】:

    • toto,titi 是什么?这些是变量吗?
    • 'toto',将被 'titi' 替换,而 'tutu' 将由 findtext replacetext 数组替换。
    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2017-09-07
    • 2019-03-07
    • 1970-01-01
    相关资源
    最近更新 更多