我有很多文件,其名称格式如下:
[文件夹名称] [文件名].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) " , '' }