Tôi đang cố gắng sao chép đệ quy các tệp và đổi tên chúng.Đổi tên nó sau khi sao chép bằng cách sử dụng powershell
Thư mục của tôi có tệp có cùng tên, vì vậy tôi cần đổi tên nó vào thời điểm tệp được sao chép.
Nhưng tôi đang gặp vấn đề. Sau đây là mã của tôi. Nó sẽ tìm thấy tập tin CopyForBuild.bat và sao chép nó vào thư mục E: \ CopyForBuild. Một khi nó được sao chép, tập tin đầu tiên nên được Copyforbuild1.txt, thứ hai sẽ là CopyforBuild2.txt và như vậy.
Sau đây là mã của tôi. Tôi đang thất bại ở đâu?
$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
}
Tại sao không trình mọi thứ tại một thời điểm (và nhớ các biến nhận giá trị mặc định): 'Get-ChildItem -Path V: \ MyFolder -filt CoptForBuild.bat -rec | Copy-Item -dest {"E: \ copyforbuild \" + $ _. BaseName + ($ i ++) + ". Txt"} '. (Cmdlets với các tham số không lấy đối tượng kiểu, như đích của 'Copy-Item', có sẵn cho mỗi bằng cách sử dụng niềng răng để không cần vòng lặp để xác định đích.) – Richard
Buddy, Nó ném ngoại lệ . "Copy-Item: Không thể liên kết đối số với tham số 'Đường dẫn' bởi vì nó là null." $ File không chứa các mục khi chỉ định "*. *" – Samselvaprabu
$ File = Get-ChildItem -Path "V: \ MyFolder \\ *. *" -Filter CopyForbuild.bat -Recurse $ i = 1 Foreach ($ f trong $ File) { Bản sao $ F.FullName ("E: \ copyforbuild \" + $ f.BaseName + $ i + ". txt") $ i ++ } – Samselvaprabu