gpt4 book ai didi

powershell - 将同名文件移动到匹配的命名文件夹

转载 作者:行者123 更新时间:2023-12-02 23:59:11 25 4
gpt4 key购买 nike

初学者,我被困住了。

$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而不是转到全名路径。如果有人可以将我链接到一些有用的资源或向正确的方向推我,我将不胜感激。仍然不确定如何访问子文件夹或创建唯一的目的地。我需要循环吗?

最佳答案

如果我很了解您的意愿,请执行以下相应的代码:

 $filter= "Alive"
$source="D:\Users\Heather's\VendorScans"
$destination ="D:\Users\Heather's\VendorScans"
set-location $source

$source_regex = [regex]::escape($source)
(Get-ChildItem $source -recurse | where {-not ($_.psiscontainer)} | select -expand fullname) -match $filter |
foreach {
$file_name = ($_ | split-path -leaf)
$file_name_withoutextension = [System.IO.Path]::GetFileNameWithoutExtension($file_name)
$file_destination = $destination + '\' + $file_name_withoutextension
$file_dest = ($_ | split-path -parent) -replace $source_regex,$file_destination

if (-not (test-path $file_dest)){mkdir $file_dest}
copy-item $_ -Destination $file_dest
}

希望这可以帮助
新年快乐
最好的祝福
斯特凡

关于powershell - 将同名文件移动到匹配的命名文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34541850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com