【发布时间】:2021-06-29 22:08:36
【问题描述】:
我有一个信息目录,该目录分为文档编号,因此每个包含文档的文件夹都以 DOC-######-NameOfDocument 开头。我要做的事情是创建一个 PowerShell 脚本,它将在目录中搜索具有指定文档编号的任何文件夹,然后获取该文件夹的内容,将其上移一级,然后删除原始文件夹(现在应该为空)。
下面是我得到的最接近预期结果的结果。
$Path = "filepath"
$Folders = Get-ChildItem -Filter "DOC-#####*" -Recurse -Name -Path $Path
$companyID = "######"
foreach ($Folder in $Folders){
$filepath = $Path + $Folder
$Files = Get-ChildItem -Path $filepath
$imagesourc = $filepath + $companyID
$imageDest = $filepath.Substring(0, $filepath.LastIndexOf('\'))
if (Test-Path -Path $imagesourc){
Copy-Item -Path $imagesourc -Destination $imageDest -Recurse
}
foreach ($File in $Files){
$Parent_Directory = Split-Path -Path $File.FullName
$Destination_Path = $filepath.Substring(0, $filepath.LastIndexOf('\'))
Copy-Item -Path $File.FullName -Destination $Destination_Path -Recurse
if ($null -eq (Get-ChildItem -Path $Parent_Directory)) {
}
}
Remove-Item $filepath -Recurse
}
这可以满足我的需要,但无论出于何种原因,我无法 Devine,它不适用于 .HTM 文件。我要移动的大多数文件都是 .html 和 .htm 文件,所以我还需要让它与 .htm 一起使用。带有.HTM的文件不会移动,文件夹也不会被删除,这至少是好的。
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/51346965/…
-
这个问题的代码是我开始的地方,我已将以下代码添加到第 3 行。 | Move-Item -Destination { $_.Directory.Parent.FullName } 如果它正在查看的文件夹中只有文件,我现在将它放到可以工作的位置,但是如果有子文件夹,它们将不会移动并且会崩溃并关闭 powershell 窗口。
-
通过一些额外的测试,崩溃的错误是目标为 NULL。如果在目标文件夹中没有找到子文件夹,则使用相同的代码。
-
我根据进一步的研究和测试对代码进行了调整。现在主要工作但无法移动 .htm 文件。
标签: powershell