PowerShell脚本没有复制我想要的

时间:2018-12-16 21:00:37

标签: powershell scripting directory subdirectory copy-item

从一开始,我就应该注意我是个流血的初学者,因为我不能在我的年级上课。

我想创建一个PowerShell脚本,该脚本将从

复制所有内容

C:\ Users \ Robert \ Desktop \ test(大量文件夹)

C:\ Users \ Robert \ Desktop \ neu(与以上名称完全相同的文件夹数量)\ price

作为一个绝对的初学者,我认为可以将$_Name替换为可变文件夹名称,因为两者名称相同,但是我显然错了,也不知道为什么。 这是我的尝试

Copy-Item "C:\Users\Robert\Desktop\test\$_name\*" -Destination "C:\Users\Robert\Desktop\neu\$_Name\price" -Recurse

它正在复制某些内容,但是将其复制到“ neu”中新文件夹中的一个包中。

我无法避免创建此脚本,因为手工至少要花两三天的时间。 我也很抱歉我的英语水平很差

谢谢

2 个答案:

答案 0 :(得分:2)

$_代表当前的管道项目。我看不到那里的管道... [咧嘴]

以下方法通过抓取源目录及其子目录中的每个文件,并将该结构复制到目标目录中来工作。它使用Splatting来整齐地构造参数。

$SourceDir = "$env:TEMP\Apps - Copy"
$DestDir = "$env:TEMP\Apps - Copy - Two"

$CI_Params = @{
    LiteralPath = $SourceDir
    Destination = $DestDir
    Force = $True
    Recurse = $True
    }
Copy-Item @CI_Params

答案 1 :(得分:1)

如果我的理解是正确的:

$src = 'C:\Users\Robert\Desktop\test'
$dst = 'C:\Users\Robert\Desktop\neu\{0}\price'

Get-ChildItem $src -Directory | ForEach-Object {
    Copy-Item -Path "$($_.FullName)\*" -Destination ($dst -f $_.BaseName) -Recurse -Force -WhatIf
}

删除-WhatIf实际执行此操作。