【问题标题】:powershell rename files in subfolders based on csvpowershell基于csv重命名子文件夹中的文件
【发布时间】:2020-04-03 08:10:48
【问题描述】:

正如这个与我的案例类似的论坛链接所建议的, 我按照下面的链接,它实际上工作得很好(我做了一些调整以满足我的需要):

Can I rename files in subfolders based on.CSV file using Powershell

但我还有另一个与之相关的问题。 在我拥有的csv中,提到了文件夹/名称.ext,从链接中,它实际上是搜索文件夹并重命名所有文件,但它不会重命名csv中列出的文件夹。 我还需要添加什么参数才能包含文件夹?

Oname,NName
文件夹 1/名称 1,新名称 1
文件夹1/名称2,新名称2

谢谢。

【问题讨论】:

    标签: powershell csv


    【解决方案1】:

    你可以试试这个:

    $data = Import-Csv -Path "YOUR_FILE_NAME.csv" # READING CSV FILE
    
    foreach ($item in $data) # FOR EACH LOOP IN ALL CSV ENTRIES
    {
        Rename-Item -Path "${$item.Oname}" -NewName "${$item.NName}"
    } # END OF FOR EACH LOOP
    

    【讨论】:

    • 现在它显示这些错误,重命名项目:无法将参数绑定到参数“路径”,因为它是一个空字符串。在 line:5 char:23 + Rename-Item -Path "${$item.Oldname}" -NewName "${$item.NewName}" + ~~~~~~~~~~~~~~~~ ~~ + CategoryInfo : InvalidData: (:) [Rename-Item], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.RenameItemCommand
    • 你的 csv 标题是什么?
    • 抱歉,根据我的 csv 标头,我确实将oname 重命名为 oldname
    【解决方案2】:

    听起来您也想重命名文件夹,但在您提供的示例 csv 中,您没有包含您希望将旧文件夹重命名为的内容。

    我不知道您是如何创建文件夹/文件列表的,但如果您可以重新创建 csv 使其看起来像这样:

    Oldname,NewName
    Name1,NewName1
    Name2,Newname2
    Folder1,Newfolder1
    Folder1,Newfolder2
    

    然后 Niraj Gajjar 提供的代码将重命名列表中的所有文件和文件夹:

    $data = Import-Csv -Path "YOUR_FILE_NAME.csv" # READING CSV FILE
    
    foreach ($item in $data) # FOR EACH LOOP IN ALL CSV ENTRIES
    {
        Rename-Item -Path "${$item.Oldname}" -NewName "${$item.NewName}"
    } # END OF FOR EACH LOOP
    

    如果由于某种原因您需要将 csv 的格式保持为“folder1/Name,Newname1”,则有不同的解决方案。

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 2019-01-28
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      相关资源
      最近更新 更多