【发布时间】:2019-06-14 21:32:14
【问题描述】:
我应该在更改结构时将数据从旧服务器移动到新服务器。
例子:
- 旧:“C:\test\old\Data\Werkstatt\06.Aufträge\companyA\200031_Signs”
- 新:“C:\test\new\Data\06.Aufträge\companyA\200031_companyA_Signs”
在旧结构中,公司的订单位于一个文件夹中。 在新结构中,所有订单都将直接迁移到订单文件夹下。名称由订单号+分隔符+公司名称+名称组成。
当前任务是从文件夹“C:\test\old\Data\Werkstatt\06”中的“C:\test\old\Data\Werkstatt\06.Aufträge\%company%\”成功复制的文件夹. Aufträge\%company%\Z_Transfered" 移动。
我试过了:
$sourcepath = "C:\test\old\Data\Werkstatt\06. Aufträge"
$basepath = "C:\test\new\Data\06. Aufträge"
$Orders = Get-ChildItem -Path $sourcepath -Directory -Recurse -Depth 1
ForEach ($Order in $Orders ) {
if ($Order.name.StartsWith("20")){
$NewFolderName = "{0}\{1}" -f ($BasePath),($order.Name.insert(6,"_" + $order.parent.Name))
$NewFolder = New-Item -Path $NewFolderName -ItemType "directory"
Copy-Item -Path "$($Order.FullName)\*" -Destination $NewFolder -Recurse -Force
#under construction
$MoveFolderName = Join-Path -path $sourcepath -ChildPath $order.parent | Join-Path -ChildPath "Z_Transfered"
if (-not (Test-Path $MoveFolderName))
{
New-Item -Path $MoveFolderName -ItemType "directory"
}
$MoveFolder = $MoveFolderName +"\" + $order.name
Move-Item -Path "$($Order.FullName)\*" -Destination $MoveFolder
$error > $sourcepath"\error.log"
}
}
我修改了昨天得到的代码。目前我的代码中还有一个错误。
现在可以将内容复制到正确的位置。 目前,他在客户文件夹下创建文件夹 Z_Transfered。问题似乎出在 Move-Item 上。 目前,该文件夹没有移动到 Z_Transfered,只有客户文件夹下的文件被移动,不幸的是,也被重命名了。有人可以帮我吗?
【问题讨论】:
-
订单文件夹内(20031_Signs内)是否还有其他文件夹?
-
在这些和大多数其他情况下是的
-
Powershell 5 可用吗?
-
可以使用
-
您发布的示例代码会从
$sourcepath重新创建子文件夹(由于对象属性未在字符串内展开,因此无法正常工作)。它甚至不会尝试生成所需的新名称。请再努力一点。