遍历路径下的所有文件

文件系统遍历与树形结构构建

1、先挂最顶级节点

 TreeListNode pNode = tlFileDisplay.AppendNode(new object[] { beOpen.Text }, -1);
 GetAllDirectory(beOpen.Text, tlFileDisplay, pNode);
函数:

         /// <summary>
        /// 遍历文件夹
        /// </summary>
        /// <param name="sPath">当前路径</param>
        /// <param name="tlList">树结构</param>
        /// <param name="pNodeParent">父节点</param>
        private void GetAllDirectory(string sPath,TreeList tlList,TreeListNode pNodeParent)
        {
            string[] sDirectory = Directory.GetDirectories(sPath);
            foreach (string sDirPath in sDirectory)
            {
                TreeListNode pNode = tlFileDisplay.AppendNode(new object[] { sDirPath }, pNodeParent);
                GetAllFiles(sDirPath, tlList, pNode);
                GetAllDirectory(sDirPath, tlList, pNode);
            }
        }

        /// <summary>
        /// 遍历文件
        /// </summary>
        /// <param name="sPath">路径</param>
        /// <param name="TreeList">树结构</param>
        /// <param name="ParentNode">父节点</param>
        private void GetAllFiles(string sPath, TreeList TreeList, TreeListNode ParentNode)
        {
            string[] sFiles = Directory.GetFiles(sPath);
            foreach (string sFileName in sFiles)
            {
                TreeList.AppendNode(new object[] { sFileName }, ParentNode);
            }
        }



### 使用 PowerShell 遍历目录并获取所有文件名 在 PowerShell 中,可以通过 `Get-ChildItem` 命令结合递归参数 `-Recurse` 来遍历指定路径下的所有文件,并提取它们的文件名。以下是实现这一功能的具体方法: #### 方法 1:直接输出文件名 以下代码将遍历指定路径下的所有文件,并仅输出文件名: ```powershell Get-ChildItem -Path "D:\目标路径" -Recurse -File | ForEach-Object { $_.Name } ``` 此命令使用了 `Get-ChildItem` 的 `-File` 参数来确保只处理文件对象,而不是目录对象[^2]。 #### 方法 2:将文件名写入文本文件 如果需要将文件名保存到一个文本文件中,可以使用以下脚本: ```powershell $logFilePath = "D:\文件名列表.txt" if (Test-Path $logFilePath) { Remove-Item -Path $logFilePath -Force } New-Item -Path $logFilePath -ItemType File -Force | Out-Null Get-ChildItem -Path "D:\目标路径" -Recurse -File | ForEach-Object { Add-Content -Path $logFilePath -Value $_.Name } ``` 上述脚本首先检查日志文件是否存在,若存在则删除并重新创建。接着,通过 `Get-ChildItem` 获取所有文件,并将每个文件的名称追加到指定的日志文件中[^1]。 #### 方法 3:包含完整路径文件名 如果需要包含文件的完整路径,可以修改输出内容为 `FullName` 属性: ```powershell Get-ChildItem -Path "D:\目标路径" -Recurse -File | ForEach-Object { $_.FullName } ``` 此命令输出的是每个文件的完整路径,而非仅文件名[^2]。 #### 方法 4:过滤特定扩展名的文件 若只想获取特定扩展名(如 `.txt`)的文件名,可以在 `Get-ChildItem` 中添加过滤器: ```powershell Get-ChildItem -Path "D:\目标路径" -Recurse -Filter *.txt -File | ForEach-Object { $_.Name } ``` 通过 `-Filter` 参数,可以限定搜索范围,提高脚本执行效率[^3]。 --- ### 注意事项 - 在使用 `-Recurse` 参数时,PowerShell 会遍历指定路径下的所有子目录。如果目录结构非常深或包含大量文件,可能会影响性能。 - 如果路径中包含特殊字符或长路径名,建议使用 PowerShell Core 或更高版本,以支持更长的路径长度。 - 使用 `Remove-Item` 删除现有日志文件时,请确保不会误删重要数据。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值