我试图以递归方式遍历目录中的所有文件夹,然后在每个目录中执行某些操作。例如,创建一个文本文件。
我可以将所有子文件夹放到一个变量中:
$folders = Get-ChildItem -Recurse | ?{ $_.PSIsContainer }
但是,我似乎无法在每个子目录中创建文件 - 而是在顶层目录中创建文件。这不起作用:
$folders | ForEach-Object { New-Item -ItemType file -Name "$_.txt" -path $_}
这会引发错误,指出找不到目录或路径太长。
如何在嵌套文件夹的每个子目录中执行某些操作?
答案 0 :(得分:19)
试试这个:
Get-ChildItem -Recurse -Directory | ForEach-Object {New-Item -ItemType file -Path "$($_.FullName)" -Name "$($_.Name).txt" }
基本上,Get-ChildItem
命令返回一系列DirectoryInfo
个对象。 FullName
属性包含完整路径,而Name
只包含叶子目录的名称。