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

25

我正在尝试递归循环遍历目录中的所有文件夹,然后在每个文件夹内做一些事情。例如,创建一个文本文件。

我可以像这样将所有子文件夹放入变量中:

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

然而,我似乎无法在每个子目录内创建文件 - 相反,这些文件是在顶级目录中创建的。这不起作用:

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

这会产生一个错误,指出找不到目录或路径太长。

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

1个回答

42

试试这个:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接