Powershell脚本可将名称大致相同的文件从文件夹复制到另一个文件夹

时间:2020-11-10 09:38:22

标签: powershell batch-file

收到近130000个代表发票的xml文件后,我遇到以下情况。

根据发票的创建日期,发票位于文件夹和子文件夹中:

文件夹2016,带有子文件夹:2016-01-01(然后此子文件夹包含xml文件),2016-01-02(然后此其他子文件夹包含当天的发票的xml文件),依此类推...直到2016年12月31日(此子文件夹包含当天的发票xml文件) 文件夹2017,带有子文件夹:2017-01-01(然后该子文件夹包含xml文件),2017-01-02(然后该其他子文件夹包含当天的发票的xml文件),依此类推...直到2017- 12-31(此子文件夹包含当天的发票的xml文件) 等等。

但是,附件位于不同的文件夹中,并且全部堆叠在一起。它们可以是PDF,docx,甚至可以是PNG。发票和附件之间的唯一链接是文件名。发票长为32个字符:0bad5e493aa44982bc60d7ed0670465e,附件如下:0bad5e493aa44982bc60d7ed0670465e-1。大多数发票只有一个附件,而其他发票则有更多附件,它们看起来像这样:0bad5e493aa44982bc60d7ed0670465e-3、0bad5e493aa44982bc60d7ed0670465e-3、0bad5e493aa44982bc60d7ed0670465e-4。

我需要的是一个脚本,该附件将附件移到正确的文件夹中,靠近相应的发票。

在脚本运行后,每个已经存在的文件夹都将包含当天的发票以及该发票的附件:

2016文件夹>子文件夹2016-01-01,将包含发票xml 0bad5e493aa44982bc60d7ed0670465e-1和附件:0bad5e493aa44982bc60d7ed0670465e-1、0bad5e493aa44982bc60d7ed0670465e-2、0bad5e493aa44982bc60d7ed0670465e-2、0bad5e493aa44982bc60d7ed0670465e-2、0bad5e493aa44982bc60d7ed0670465e-2、0bad5e493aa44982b和60

请指出正确的方向(我正在考虑通过Powershell,但是我可以尝试其他方法),因为这个请求对我来说完全是意外的,而手动执行此操作将花费一生,而我不是很多程序员。

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试一下:

Get-ChildItem -Path C:\Invoices\2016 -Include *.xml -Recurse | Select BaseName, DirectoryName | 
   ForEach { Get-ChildItem -Path C:\Attachments -Include "$($_.BaseName)*.*" -Recurse | 
      Move-Item -Destination $_.DirectoryName }

我希望这是您期望的,因为我不确定您的解释。 只需用正确的路径替换C:\Invoices\2016C:\Attachments

相关问题