用powershell合并.docx格式的word文档并压缩

我想通过powershell合并文件夹内的所有docx格式的word文档

源文件夹路径为:D:\2022年12月21日朝花朝拾背单词软件\2019高中人教版\theCollection\AdobeAIR\Versions\myResources\2023年3月3日

输出路径为:D:\2022年12月21日朝花朝拾背单词软件\2019高中人教版\theCollection\AdobeAIR\Versions\myResources\myDoc.docx

合并完毕后,将源文件夹内的docx文档压缩后保存到:

D:\2022年12月21日朝花朝拾背单词软件\2019高中人教版\theCollection\AdobeAIR\Versions\myResources\myDoc.zip

最后删除源文件夹内的那堆docx文档。

img

这应该算比较基础的东西吧,所以悬赏也不多,不嫌弃的帮忙写一下,我今天还会陆陆续续提问几个关于powershell的问题,欢迎大家继续关注。

@BitGPT @霸都小魔女 @Iverson1022

“Devil组”引证GPT后的撰写:
用PowerShell的Compress-Archive cmdlet来完成这个任务,以下是一个示例脚本:

# 设置源文件夹路径和输出路径
$sourcePath = "D:\2022年12月21日朝花朝拾背单词软件\2019高中人教版\theCollection\AdobeAIR\Versions\myResources\2023年3月3日"
$outputPath = "D:\2022年12月21日朝花朝拾背单词软件\2019高中人教版\theCollection\AdobeAIR\Versions\myResources\myDoc.docx"

# 合并源文件夹内的所有docx文件到输出文件
Get-ChildItem -Path $sourcePath -Filter "*.docx" | Foreach-Object { 
    $content = Get-Content $_.FullName -Raw
    Add-content -Path $outputPath -Value $content
}

# 压缩输出文件到zip文件
$zipPath = "D:\2022年12月21日朝花朝拾背单词软件\2019高中人教版\theCollection\AdobeAIR\Versions\myResources\myDoc.zip"
Compress-Archive -Path $outputPath -DestinationPath $zipPath

# 删除源文件夹内的docx文件
Get-ChildItem -Path $sourcePath -Filter "*.docx" | Remove-Item


先设置源文件夹路径和输出路径,然后使用Get-ChildItem cmdlet获取源文件夹内的所有docx文件,并使用Foreach-Object cmdlet循环处理每个文件。

  • 在循环中,使用Get-Content cmdlet读取文件内容,并使用Add-Content cmdlet将内容添加到输出文件中。
  • 完成合并后,使用Compress-Archive cmdlet将输出文件压缩到zip文件,并使用Remove-Item cmdlet删除源文件夹内的docx文件。

该回答引用ChatGPT

如有疑问还请 回复我

可以使用以下PowerShell脚本来实现这个任务:


# 设置源文件夹路径和输出路径
$sourceFolder = "D:\2022年12月21日朝花朝拾背单词软件\2019高中人教版\theCollection\AdobeAIR\Versions\myResources\2023年3月3日"
$outputFile = "D:\2022年12月21日朝花朝拾背单词软件\2019高中人教版\theCollection\AdobeAIR\Versions\myResources\myDoc.docx"

# 合并所有docx文件到输出文件
$wordApp = New-Object -ComObject Word.Application
$wordDoc = $wordApp.Documents.Add()
$docxFiles = Get-ChildItem $sourceFolder -Filter *.docx
foreach ($docxFile in $docxFiles) {
    $doc = $wordApp.Documents.Open($docxFile.FullName)
    $doc.Content.Select()
    $doc.Content.Copy()
    $selection = $wordDoc.Range()
    $selection.Collapse([Microsoft.Office.Interop.Word.WdCollapseDirection]::wdCollapseEnd)
    $selection.Paste()
    $doc.Close()
}
$wordDoc.SaveAs($outputFile)
$wordDoc.Close()
$wordApp.Quit()

# 压缩源文件夹内的docx文件到myDoc.zip
$zipFile = "D:\2022年12月21日朝花朝拾背单词软件\2019高中人教版\theCollection\AdobeAIR\Versions\myResources\myDoc.zip"
Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::CreateFromDirectory($sourceFolder, $zipFile)

# 删除源文件夹内的docx文件
Remove-Item $sourceFolder\*.docx

在这个脚本中,我们首先指定了源文件夹路径和输出路径。然后,我们使用PowerShell的Get-ChildItem命令获取源文件夹中所有的docx文件,并使用foreach循环打开每个文件,并将其内容复制到一个新的Word文档中。最后,我们将新的Word文档保存到输出路径。

接下来,我们使用.NET的System.IO.Compression.FileSystem类来创建一个新的zip文件,并将源文件夹中所有的docx文件压缩到其中。最后,我们使用PowerShell的Remove-Item命令删除源文件夹中的所有docx文件。

csdn的队友们太给力啦!一次又一次的感动了我