扫描文件名并移动到不同服务器上的相应文件夹

扫描文件名并移动到不同服务器上的相应文件夹
  1. 我有一个文件夹(位于服务器 A 的学生),其中包含 800 个文件,每个文件在文件名的前 6 个字符中都有一个唯一标识符(例如 Y9L-01_xxx.xlsx;Y9L-02_xxx.xlsx;Y9L-03_xxx.xlsx 等)。

  2. 我有文件夹和子文件夹,我想将文件传输到这些文件夹中。这些文件夹位于服务器 B 中。

  3. 上面 2 中的每个文件夹在文件夹名称开头都包含相同的 6 个字符的文件名唯一标识符(Y9L-01;Y9L-02;Y9L-03)。文件夹 Y9L-01;Y9L-02;Y9L-03 下有一个名为 2014_Hockey 的子文件夹;

  4. 我想要将上述 1 中描述的“Students”文件夹中的文件传输到上述 2 和 3 中描述的 Y9L-01、T9L-02、Y9L-03 等下的 2014_Hockey 文件夹中。

实际上,我希望脚本将文件名的前 6 个字符与#3 中描述的文件夹名称的前 6 个字符进行匹配,然后将文件移动到该文件夹​​下的 2014_Hockey 文件夹中。

示例:将位于服务器 A 中的 \Students\Y9L-01_HockeyChampionship.xslx 中的 .xslx 文件移动到位于服务器 B 中的 Y9L-01\2014_Hockey

我该怎么做呢?

谢谢

问候 Rauri

答案1

使用 PowerShell 应该可以轻松完成此操作。我还没有亲自测试过,因此在实际文件上使用它之前,您应该先在一些示例数据上尝试一下。

Get-ChildItem '\\ServerA\Students' | ForEach-Object {$NewFolder = $_.Name.Substring(0,6); Move-Item $_ "\\ServerB\$NewFolder\2014_Hockey"}

如果\\ServerA\Students 符合您指定的命名约定。

例如,这将执行以下操作:

\\ServerA\Students\Y9L-01_HockeyChampionship.xlsx
将移至
\\ServerB\Y9L-01\2014_Hockey\Y9L-01_HockeyChampoinship.xlsx

如果你需要仅有的移动 Excel 文件,您需要通过Where-Object如下方式添加来过滤掉其余文件:

Get-ChildItem '\\ServerA\Students' | Where-Object {$_.Extension -eq '.xlsx'} | ForEach-Object {$NewFolder = $_.Name.Substring(0,6); Move-Item $_ "\\ServerB\$NewFolder\2014_Hockey"}

相关内容