Powershell 2.0を使用して、一連のファイルの名前を再帰的に変更しようとしています。ディレクトリ構造は次のようになります。
Leaflets
+ HTML
- File1
- File2
...
+ HTMLICONS
+ IMAGES
- Image1
- Image2
- File1
- File2
...
+ RTF
- File1
- File2
...
+ SGML
- File1
- File2
...
次のコマンドを使用しています。
get-childitem Leaflets -recurse | rename -newname { $_.name.ToLower() }
ファイルの名前を変更しているようですが、サブディレクトリについて不平を言っています。
Rename-Item : Source and destination path must be different.
robocopyを使用してデータを毎月リロードしますが、ディレクトリは変更されないため、手動で名前を変更できます。get-children
サブディレクトリ(のような)をスキップする方法はありますfind Leaflets -type f ...
か?
ありがとう。
更新:問題は、すでにすべて小文字になっているファイルにあるようです。コマンドを次のように変更してみました:
get-childitem Leaflets -recurse | if ($_.name -ne $_name.ToLower()) rename -newname { $_.name.ToLower() }
しかし、Powershellif
は、コマンドレットや関数などではないと文句を言います。の出力をステートメントにパイプできますget-childitem
かif
?
更新2:これは機能します:
$files=get-childitem Leaflets -recurse
foreach ($file in $files)
{
if ($file.name -ne $file.name.ToLower())
{
rename -newname { $_.name.ToLower() }
}
}