Переименуйте его после копирования с помощью powershell
Я пытаюсь рекурсивно скопировать файлы и переименовать их.
в моих папках есть файл с тем же именем ,поэтому мне нужно переименовать его в момент его копирования.
но я продолжаю сталкиваться с проблемой. Следование моему кодексу. Он должен найти CopyForBuild.файл bat и скопируйте его в E:CopyForBuild папка. После копирования первый файл должен быть Copyforbuild1.txt, второй будет CopyforBuild2.TXT и так далее.
Ниже приведен мой код. Где я провал?
$File = Get-ChildItem -Path V:MyFolder -Filter CopyForbuild.bat -Recurse
$i=1
Foreach ($f in $File)
{
Copy-Item $f "E:copyforbuild"
Rename-Item -path "E:Copyforbuild"+"$f" -newname "CopyForbuild"+"$i"+".txt"
$i = $i+1
}
1 ответов
вы можете переименовать файл при копировании в Copy-Item, просто укажите полный путь в обоих местах:
copy-item c:\PST.config c:\PST.config
это переименует 1.config для 2.конфиг. Нет необходимости вызывать отдельную функцию переименования. Теперь ваш код должен выглядеть примерно так:
$File = Get-ChildItem -Path "V:\MyFolder\" -Filter CopyForbuild.bat -Recurse
$i=1
Foreach ($f in $File)
{
Copy-Item $f.FullName ("E:\copyforbuild\" + $f.BaseName + $i +".txt")
$i++
}
вы можете сделать его еще короче, если использовать цикл for:
$File = Get-ChildItem -Path "V:\MyFolder\" -Filter CopyForbuild.bat -Recurse
for($i = 0; $i -lt $File.Count; $i++)
{
Copy-Item $File[$i].FullName ("E:\copyforbuild\" + $File[$i].BaseName + $i +".txt")
}
или путь короче и шире, если следовать комментарию Ричарда