在 Powershell 中将 foreach 和 if/then/else 链接在一起时遇到问题

在 Powershell 中将 foreach 和 if/then/else 链接在一起时遇到问题

我有一个文本文档,其中包含 80 个类似格式的文件名。每个文件名的最后 4 位数字表示其子目录位置,例如:

wheat_bread_12345678.doc将始终位于\\\\emcfiler\user\grains\56\78wheat_bread_12346942.doc将始终位于\\\\emcfiler\user\grains\69\42

我使用 foreach 浏览文件,然后使用 if/then 将文件名与其目录匹配并将其复制到其他地方。

我的脚本不是查找每个文件并将其与文件夹匹配,而是查找从文本文档中的最后一个文件名派生的目录中的每个文件。例如,最后一个文件名是,wheat_bread_12348723.doc并且脚本正在尝试查找中的每个文件\\\\emcfiler\user\grains\87\23

这是我的脚本和其中一个(79)错误:

$f = Get-Content \\\\emcfiler\user\ace\lax_brd.txt

foreach ($file in $f) {

if ($f -match ".*_\d{4,4}(\d\d)(\d\d)\.doc") {

$sourcePath = "\\\\emcfiler\user\grains\" + "$($matches[1])\$($matches[2])\" + $file

$destinationPath = "\\\\emcfiler\user\new_grains\"
Copy-Item $sourcePath $destinationPath
} 

else 

{
Write-Error "Can't find folder path from $f"
}

}

错误:

复制项目:找不到路径“\\emcfiler\user\grains\87\23\wheat_bread_12345678.doc”,因为它不存在。

相关内容