Tôi đang cố gắng đổi tên một loạt tệp đệ quy bằng Powershell 2.0. Cấu trúc thư mục trông như thế này:Đổi tên tệp thành chữ thường trong Powershell
Leaflets
+ HTML
- File1
- File2
...
+ HTMLICONS
+ IMAGES
- Image1
- Image2
- File1
- File2
...
+ RTF
- File1
- File2
...
+ SGML
- File1
- File2
...
Tôi đang sử dụng lệnh sau:
get-childitem Leaflets -recurse | rename -newname { $_.name.ToLower() }
và có vẻ như để đổi tên các tập tin, nhưng phàn nàn về các thư mục con:
Rename-Item : Source and destination path must be different.
tôi tải lại dữ liệu hàng tháng bằng cách sử dụng robocopy, nhưng các thư mục không thay đổi, vì vậy tôi có thể đổi tên chúng bằng tay. Có cách nào để nhận được get-children
để bỏ qua các thư mục con (như find Leaflets -type f ...
) không?
Cảm ơn.
CẬP NHẬT: Có vẻ như sự cố xảy ra với các tệp đã là tất cả các trường hợp thấp hơn. Tôi đã cố gắng thay đổi lệnh để:
get-childitem Leaflets -recurse | if ($_.name -ne $_name.ToLower()) rename -newname { $_.name.ToLower() }
nhưng bây giờ Powershell phàn nàn rằng if
không phải là một lệnh, chức năng, vv Tôi ống Can đầu ra của get-childitem
đến một tuyên bố if
?
UPDATE 2: Đây hoạt động:
$files=get-childitem Leaflets -recurse
foreach ($file in $files)
{
if ($file.name -ne $file.name.ToLower())
{
rename -newname { $_.name.ToLower() }
}
}
Cảm ơn. Và để thay đổi tên tệp, chúng tôi có thể sử dụng: gci. -recurse -force | ? {! $ _. PSIsContainer} | rni -New {$ _. Name.replace ("aaa", "bbb")} –