Powershell循环遍历文件夹,在每个文件夹中创建文件

时间:2015-11-05 11:09:28

标签: loops powershell

我试图以递归方式遍历目录中的所有文件夹,然后在每个目录中执行某些操作。例如,创建一个文本文件。

我可以将所有子文件夹放到一个变量中:

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

但是,我似乎无法在每个子目录中创建文件 - 而是在顶层目录中创建文件。这不起作用:

$folders | ForEach-Object { New-Item -ItemType file -Name "$_.txt" -path $_}

这会引发错误,指出找不到目录或路径太长。

如何在嵌套文件夹的每个子目录中执行某些操作?

1 个答案:

答案 0 :(得分:19)

试试这个:

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

基本上,Get-ChildItem命令返回一系列DirectoryInfo个对象。 FullName属性包含完整路径,而Name只包含叶子目录的名称。