如何从文件名中删除文件夹名称?

如何从文件名中删除文件夹名称?

我有很多文件,其名称格式如下:

[文件夹名称] [文件名].txt

位于正确的文件夹中--例如:

+- Folder 1
    +- Folder 1 File 1.txt
    |- Folder 1 File 2.txt
+- Folder 2
    +- Folder 2 File 1.txt
    |- Folder 2 File 2.txt

我需要从文件名中删除文件夹名称。

我找到了 Powershell 命令$file.DirectoryName,但它在重命名命令中显然不起作用:

get-childitem -filter "*.txt" -recurse | rename-item -newname {$_.Name -replace "$file.DirectoryName ", ""}

因为这是在进行简单的模式匹配而不是评估变量 - 尽管语法颜色暗示它会这样做。

我在这里遗漏了什么?

答案1

使用StartsWith方法检查文件是否以文件夹名称开头。尝试以下 cmdlet

Get-ChildItem -Recurse -Filter "*.txt" | Where { $_.Name.StartsWith($_.Directory.Name) } | Rename-Item -NewName { $_.Name -Replace  "$($_.Directory.Name) " , ''  }

相关内容