Powershell脚本批量复制文件夹并逐步重命名复制的文件夹

时间:2014-09-22 08:18:43

标签: powershell-ise

我用谷歌搜索并继续寻找解决方案,但无法正确调整它们。寻找帮助我的powershell解决方案批量复制一个名为TEST0000的子文件夹,并将输入的数量复制到另一个名为Prod的文件夹,其中包含增量文件夹名称,例如。所以将c:\ test \ dba \ test0000(100份)复制到c:\ test \ prod

说我想要100个文件夹副本到另一个名为c:\ test \ prod的文件夹,所以目标test \ prod文件夹中的文件夹名称将是test0001,test0002,test0003等,一直到100个。

这是我到目前为止拼凑但没有取得任何成功的内容,它复制了文件夹,但它用数字而不是增量文件夹名称命名。所以我没有在目标文件夹中找到正确的文件夹名称,它只是将数字显示为目标目录中的文件夹名称!请帮帮我!在此先感谢。

$NumberOfFolders = Read-Host "Enter the number of Folders You need:"
$Source = "C:\Test\DBA\TEST0000"
$WhereToWrite = "C:\Test\Prod\"
for($i=1;$i -le $NumberOfFolders;$i++){
$dest = "$WhereToWrite$i"
Copy-Item $Source $dest -Recurse -Container
}

1 个答案:

答案 0 :(得分:0)

这是因为Copy-Item无法猜出您要保留文件夹名称。它只知道,是你告诉它将文件夹C:\Test\DBA\TEST0000的内容复制到文件夹C:\Test\Prod\1C:\Test\Prod\ + $i)。它确实如此。

您必须手动将TEST0000添加到目标路径。为此,请在Split-Path路径上使用带有Leaf参数的$Source cmdlet,它将为您提供路径的最后一个元素(TEST0000)的名称。然后,将其添加到目标路径并添加$i变量:

$NumberOfFolders = Read-Host "Enter the number of Folders You need:"
$Source = "C:\Test\DBA\TEST0000"
$WhereToWrite = "C:\Test\Prod\"

for($i=1 ; $i -le $NumberOfFolders ; $i++){
    $dest = Join-Path -Path $WhereToWrite -ChildPath ((Split-Path $Source -Leaf) + $i)
    Copy-Item $Source $dest -Recurse -Container
}