【问题标题】:Method to copy a file then rename it based on a text list of names复制文件然后根据名称的文本列表重命名它的方法
【发布时间】:2014-12-18 09:08:18
【问题描述】:

我有 1 个固件文件(例如:firmwareV27.bdnl)我需要复制并重命名为 900 多个文件(用于唯一设备)。我有一个唯一名称的列表(目前在 Excel 中),但我不知道如何将原始文件复制到目录中,然后用列表中的名称重命名它并循环直到完成。

如果有帮助,我正在使用装有 Excel 2010 的 Windows 7 PC。

【问题讨论】:

  • 这里的常用cmets...您尝试过什么?您可以显示您尝试过的代码(以及由此产生的错误,如果有的话)吗?你在看什么样的目录结构? Excel中的数据是如何排列的?您熟悉将数据从 Excel 移植到 PowerShell 吗?
  • 是否可以选择使用 python?
  • 我还没试过。我可以制作一个批处理文件来移动要重命名的文件并将其重命名为静态名称。但我不知道如何从列表中调用名称。现在,我需要的名字在单列“A”中。如果这更容易,我可以使用文本文件。我现在只使用 Excel 来创建所需文件名的列表。我对 Python 一无所知。
  • 将列表导出为 csv 并使用 powershell 将其导入,有很多关于在 powershell 中使用 csv 的教程,因此查找文档应该没有问题
  • 谢谢保罗,除非有人提出更好的建议,否则我会开始研究。

标签: excel powershell batch-file excel-2010


【解决方案1】:

如果您将名称保存在纯文本文件中(每行一个名称),这里有一个单行代码可以解决问题。

Get-Content -Path filenames.txt | foreach {copy firmwareV27.bdnl $_}

如果 Powershell 位于固件所在的目录中并且 filenames.txt 也在同一目录中,这应该可以工作。根据需要修改路径。

【讨论】:

    【解决方案2】:

    PowerShell 很有趣,但在这里你不需要它。在 Excel 中:

    • 将所有内容移至 B 列
    • 在 A 列中,输入copy firmwarev27.bdnl 并双击角方块以填充
    • 选择两列,复制并粘贴到记事本中
    • 无论固件在哪里,都保存为makecopies.bat文件
    • 从命令提示符运行它

    有数百行,例如:

    copy firmwarev27.bdnl   name1.bdnl
    copy firmwarev27.bdnl   name2.bdnl
    copy firmwarev27.bdnl   name3.bdnl
    copy firmwarev27.bdnl   name4.bdnl
    

    但它快速简单,不涉及任何编程,如果你不会编程,这似乎很好。

    【讨论】:

    • 我猜标签大战正在进行中? :)
    • 这给了我一个可行的解决方案!非常感谢!
    【解决方案3】:

    好的,我已经为你准备了一个班轮。您需要做的就是突出显示您的 excel 文件中的整个列,然后将其复制并粘贴到一个名为“filenames.txt”的文本文件中,这样每行就有一个文件,然后将其保存到与固件文件相同的目录中.

    现在以命令或批处理文件的形式运行它:

    for /F %%i IN (filenames.txt) DO copy firmwareV27.bdnl %%i
    

    好了,希望对你有帮助!

    【讨论】:

    • 我这样做并运行了它,但没有看到任何输出。
    • @Shadotek 没有任何部分打印输出,但是文件在那里吗?
    • 这就是我的意思。它们应该是在同一个目录中创建的,对吧?我什么都没看到。
    • @Shadotek filenames.txt 中的名称是否包含 .bdnl 扩展名?
    • 抱歉让您久等了,我不得不将其他解决方案重新应用于 7 个不同的固件文件,总共生成 1559 个。我希望看到这种方法也能奏效,所以如果你想坚持下去,我会继续努力让它发挥作用。但是,是的,ext 文件中的名称包含 .bdnl 扩展名。
    【解决方案4】:

    我可以使用 bash 脚本来做到这一点。

    #!/bin/bash
    filename='filenames.txt'
    echo Start
    while read p; do
    cp default.xsh ./new_sessions/$p.xsh
    done < $filename
    
    1. 将要重命名的列表放入 filenames.txt 中
    2. 将default.xsh替换为固件文件名,与filenames.txt放在同一目录下
    3. new_sessions 是我将重命名的副本放入的目录的名称。**

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 2013-07-13
      • 2014-08-03
      • 1970-01-01
      相关资源
      最近更新 更多