rename - 重命名文件但不明确知道文件扩展名
问题描述
所以我有一个 csv 文件,它有两列,OrigFilename|NewFilename,我有一个包含超过 1k 个文件的目录。问题是,我的列表没有文件扩展名。我将如何在不明确定义文件扩展名的情况下将文件重命名为新文件名,而只使用原始文件名中的扩展名?
这就是我所拥有的,但它需要文件扩展名。我有一个制定哈希表以在其中获取扩展名的问题。
$Renames = Import-csv "C:\Users\admin\Desktop\pull\rename.csv" $TargetDir = "C:\Users\admin\Desktop\pull" $RenHash = @{} $Renames | ForEach-Object { $RenHash[$ .OName]=$ .NName } Get-ChildItem -Path $TargetDir -Recurse -Include $Renames.OName | 重命名项目 -NewName {$RenHash[$_.Name]}
解决方案
这对我有用。请注意,我将 csv 中的标题行从更改为OrigFilename|NewFilename
,OrigFilename,NewFilename
因此它也像您的文件的其余部分一样以逗号分隔。
我没有测试递归到文件夹或具有相同名称但扩展名不同的文件。
$Renames = Import-csv ".\fromTo.csv"
$TargetDir = "files"
$Renames | ForEach-Object {
$file = Get-ChildItem -Path $TargetDir -Recurse -Include ($_.OrigFilename + ".*")
$ext = [System.IO.Path]::GetExtension($file)
$newName = $_.NewFilename + $ext;
Rename-Item -Path $file -NewName $newName
}
推荐阅读
- c - C语言中的链表初始化
- javascript - 如何使用本地存储中的数据初始化存储?
- ios - 在 Menu() 中使用多个 if 条件
- css - 在css中,如何创建一个凸出的正方形
- python - Django 表单字段的换行符
- laravel - 在 laravel 中使用 join 和按月计算嵌套选择
- python - 将日期插入 MySQL 数据库时如何忽略时间戳
- javascript - 如何根据数组 React 中的值从 List 更新 Cell 的状态?
- javascript - 如何将 toast 消息添加到提交按钮
- snmp - snmptranslate 可以返回 MIB 中定义的整数的文本值吗?