2015-11-05 15 views
8

私はディレクトリ内のすべてのフォルダを再帰的にループして、各ディレクトリ内で何かを実行しようとしています。たとえば、テキストファイルを作成します。Powershellはフォルダをループし、各フォルダにファイルを作成します

私はそうのような変数にすべてのサブフォルダを取得することができます:

$folders = Get-ChildItem -Recurse | ?{ $_.PSIsContainer } 

しかし、私は、各サブディレクトリ内のファイルを作成するように見えることはできません - ファイルは、代わりに、トップディレクトリに作成されます。これは動作しません:

ディレクトリが見つからないというエラーをスローするか、パスが長すぎること
$folders | ForEach-Object { New-Item -ItemType file -Name "$_.txt" -path $_} 

ネストされたフォルダの各サブディレクトリではどうすればよいですか?

答えて

15

はこれを試してみてください:

Get-ChildItem -Recurse -Directory | ForEach-Object {New-Item -ItemType file -Path "$($_.FullName)" -Name "$($_.Name).txt" } 

基本的には、Get-ChildItemコマンドはDirectoryInfoオブジェクトのシーケンスを返します。 FullNameプロパティにはフルパスが含まれ、Nameにはリーフディレクトリの名前だけが含まれます。

関連する問題