【发布时间】:2019-09-12 20:47:48
【问题描述】:
我正在尝试读取文件目录,然后在具有两列名称的 CSV 文件中搜索文件,新名称。我想查找该文件,然后用新名称重命名原始文件。有时我的原始文件会从 CSV 列表中丢失。
$folder = "c:\test\"
$csv = "C:\tests\replace.csv"
$keywords = @{}
Import-Csv $csv | ForEach-Object {
$keywords[$_.Search] = $_.Replace
}
Get-ChildItem $folder -Recurse | ForEach-Object {
$newname = $_.Name
foreach ($word in $keywords.Keys) {
$newname = $newname.Replace($word, $keywords[$word])
}
if ($_.Name -ne $newname) {
Rename-Item -Path $_.FullName -NewName $newname
}
}
它确实适用于某些文件,然后根据新名称字段将 1 个文件重命名为长字符串。任何帮助都会很棒。
【问题讨论】:
-
你能举一个CSV文件中数据的例子吗?我认为你可能过于复杂了。
-
如果 csv 文件包含完整的当前名称作为键,您不需要迭代所有键,只需使用当前名称作为键。 `Rename-Item 也很聪明,不会尝试重命名为相同的名称。
-
在我的 csv 文件中,我有两列,搜索,新名称,并用逗号分隔。内容类似于 file1111.dat,newfilename.dat
标签: powershell