首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PowerShell创建导入文档管理系统的索引文件

使用PowerShell创建导入文档管理系统的索引文件
EN

Stack Overflow用户
提问于 2017-10-20 13:15:24
回答 1查看 421关注 0票数 1

我试图编写一个PowerShell脚本来创建一个索引文件,用于将大量文档列表导入到我们的文档管理系统中。

几件事:

  • 所有文档都位于同一个文件夹中。
  • 所有文档都是相同类型的,.pdf
  • 创建索引所需的所有信息都在相应文档的文件名中。

所需索引文件的格式为.txt,以下是.txt文件中每一行的格式:

  • IndexField1,IndexField2,IndexField3 3@DocumentPath

三个示例文件:

  • C:\测试\Doe,John -字母表初等-第1 Grade.pdf
  • C:\测试\Bay,迈克尔-变压器高-12 Grade.pdf
  • C:\测试\Shyamalan,M.夜晚-人格高-10 Grade.pdf

使用上述示例,结束索引文件将需要如下所示:

  • Doe,John,Alphabet小学,1年级@C:\Test\Doe,John - Alphabet小学-1 Grade.pdf
  • 贝,迈可,变压器高,12级@C:\Test\ Bay,迈克尔-变压器高-12 Grade.pdf
  • Shyamalan,M.夜,个性高,10年级@C:\Test\Shyamalan,M.夜晚-个性高-10 Grade.pdf

我可以创建一个.txt文件,列出文件夹中的所有文档。

代码语言:javascript
复制
Get-ChildItem C:\Test\ -name | Out-File C:\Test\results.txt

但是,我不知道从哪里开始解析results.txt的每一行并附加适当的信息来获取索引文件所需的格式。

有什么建议或榜样可供参考吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-20 14:04:01

循环您的Get-ChildItem返回的对象。然后,您可以使用-split-replace和正则表达式来筛选出要查找的单个片段。然后将它们合并到输出所需的格式中。

代码语言:javascript
复制
$Output = Get-ChildItem C:\Test\ | ForEach-Object {
    $Last = ($_.BaseName -split ',')[0]
    $First = $_.BaseName -replace '(^.*?,\s)(.*?)(\s-\s.*)','$2'
    $School = $_.BaseName -replace '(^.*?\s-\s)(.*?)(\s-\s.*)','$2'
    $Grade = ($_.BaseName -split ' - ')[-1]
    $Path = $_.FullName

    # Unsure if there is supposed to be a space before first name.
    "$Last, $First,$School,$Grade@$Path"
}
$Output | Out-File C:\Test\results.txt

您的输出看起来像一个没有头的.csv,没有适当的引号。如果您的文档管理系统(,DMS)确实需要正确格式化的.csvs,那么您可以创建对象数组,然后以CSV格式导出它们。使用ConvertTo-CSVSelect-Object -Skip 1将允许您跳过文件的头。

代码语言:javascript
复制
$Output = Get-ChildItem C:\Test\ | ForEach-Object {
    [pscustomobject]@{
        Last = ($_.BaseName -split ',')[0]
        First = $_.BaseName -replace '(^.*?,\s)(.*?)(\s-\s.*)','$2'
        School = $_.BaseName -replace '(^.*?\s-\s)(.*?)(\s-\s.*)','$2'
        GradeAtPath = "$(($_.BaseName -split ' - ')[-1])@$($_.FullName)"
    }
}
$Output | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Out-File C:\Test\results.txt
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46849904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档