2015-11-05 200 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只包含叶目录的名称。

相关问题