初学者和我卡住了。将具有相同名称的文件移动到匹配的命名文件夹
$filter= "Alive"
$source="D:\Users\Heather's\VendorScans\*"
Get-ChildItem -recurse | ?{ $_.PSIsContainer } |Select-Object fullname | Where-Object {$_.fullname -match $filter}
$destination= (Where-Object {$_.fullname -match $filter})
Copy-Item $source -destination $destination -recurse
最初的问题是将名称为“Alive”的文件移动到名为“Alive”的文件夹中。 所以我试图从一个目录文件夹中的子文件夹复制文件,我将它移动到同一个驱动器上的双嵌套子文件夹。所以D:\Users\Heather's\VendorScans\*
到D:\Users\Heather's\Vendors\AliveHospice
。等目的地将根据文件名是否匹配而改变。唯一的问题是,当我运行这个时,它将文件放在主目录中,所以D:\Users\Heather's
而不是去全名路径。如果有人能够将我联系到一些有用的资源,或者将我推向正确的方向,我将不胜感激。仍然不知道如何访问子文件夹或创建独特的目的地。我需要一个循环吗?
的'GET-ChildItem'行通过管道进行了大量过滤,但最终的结果并未保存,它离开管道,并且可能只是打印到屏幕上。 ('PSIsContainer'意味着它只包含文件夹,但是你讨论想要文件?)。下一行'$ destination = ...'调用'没有输入的where-object',并保存空输出 - 所以'Copy-Item'的目的地是空的。你可能确实需要一个或两个循环,但我并不真正了解你在做什么 - 你能举一个例子说明哪个文件可能从哪里移动到哪里?目标文件名如何改变? – TessellatingHeckler
目标文件夹名称/位置是否已知?这是一条固定的路径吗?相对于文件或源文件夹?一个完全任意的位置? –
来源始终是相同的(vendorscans文件夹),并且目的地与我选择的过滤器有关。 (在我的最终版本中,我会得到类似于($ filter = Read-Host“请输入过滤器名称”)的脚本。脚本应读取文件名并将文件移动或复制到同一D驱动器上的文件夹(可能是子文件夹)同样的名字,也感谢你对Get-Childitem的解释,我想我可以将它的结果保存到一个变量中! – Heather