You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中从文件路径捕获文件名上级的子文件夹名称

提取文件路径的上级/上两级文件夹名称

下面针对不同脚本语言给出直接可用的实现方案,满足你循环处理文件时提取目标文件夹名称的需求:

PowerShell 实现

利用PowerShell的文件对象属性可以直接获取层级目录:

单个路径处理

$filePath = "C:\Users\Bandit\AppData\Local\Temp\9c86ee608bb9477ebb11914c36a5a76d\638110173610123239\IDUDatabase_4.0.0.119\IDUDatabase\test.sql"

# 获取直接上级文件夹(结果:IDUDatabase)
$parentFolder = (Get-Item $filePath).Directory.Name

# 获取上两级文件夹(结果:IDUDatabase_4.0.0.119)
$grandParentFolder = (Get-Item $filePath).Directory.Parent.Name

循环处理文件

# 遍历指定目录下所有.sql文件(可修改过滤规则)
Get-ChildItem -Path "C:\你的目标目录路径" -Filter "*.sql" -Recurse | ForEach-Object {
    $file = $_
    $parent = $file.Directory.Name
    $grandParent = $file.Directory.Parent.Name

    Write-Host "文件路径: $($file.FullName)"
    Write-Host "直接上级文件夹: $parent"
    Write-Host "上两级文件夹: $grandParent`n"
}

Python 实现

使用pathlib模块可以简洁地处理路径层级:

单个路径处理

from pathlib import Path

file_path = Path("C:\\Users\\Bandit\\AppData\\Local\\Temp\\9c86ee608bb9477ebb11914c36a5a76d\\638110173610123239\\IDUDatabase_4.0.0.119\\IDUDatabase\\test.sql")

# 直接上级文件夹
parent_folder = file_path.parent.name
# 上两级文件夹
grandparent_folder = file_path.parent.parent.name

print(f"直接上级文件夹: {parent_folder}")
print(f"上两级文件夹: {grandparent_folder}")

循环处理文件

from pathlib import Path

# 遍历指定目录下所有.sql文件
for file_path in Path("C:\\你的目标目录路径").rglob("*.sql"):
    parent = file_path.parent.name
    grandparent = file_path.parent.parent.name if file_path.parent.parent else "无上级目录"

    print(f"文件路径: {file_path}")
    print(f"直接上级文件夹: {parent}")
    print(f"上两级文件夹: {grandparent}\n")

Batch 脚本实现

通过批处理的for命令拆分路径层级:

单个路径处理

@echo off
set "filePath=C:\Users\Bandit\AppData\Local\Temp\9c86ee608bb9477ebb11914c36a5a76d\638110173610123239\IDUDatabase_4.0.0.119\IDUDatabase\test.sql"

:: 获取直接上级文件夹
for %%F in ("%filePath%") do set "parentDir=%%~dpF"
for %%F in ("%parentDir%.") do set "parentFolder=%%~nxF"

:: 获取上两级文件夹
for %%F in ("%parentDir%..") do set "grandParentFolder=%%~nxF"

echo 直接上级文件夹: %parentFolder%
echo 上两级文件夹: %grandParentFolder%

循环处理文件

@echo off
setlocal enabledelayedexpansion
set "targetDir=C:\你的目标目录路径"

:: 遍历目录下所有.sql文件
for /r "%targetDir%" %%F in (*.sql) do (
    echo 文件路径: %%~fF
    :: 提取直接上级文件夹
    for %%D in ("%%~dpF.") do set "parent=%%~nxD"
    :: 提取上两级文件夹
    for %%D in ("%%~dpF..") do set "grandParent=%%~nxD"
    
    echo 直接上级文件夹: !parent!
    echo 上两级文件夹: !grandParent!
    echo.
)
endlocal

内容的提问来源于stack exchange,提问作者Bandit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:20:25