【问题标题】:Unable to Rename Copied Files via Windows Command Line无法通过 Windows 命令行重命名复制的文件
【发布时间】:2015-10-13 15:32:39
【问题描述】:

我正在尝试创建一个 .BAT 脚本,该脚本将从 CSV 读取文件位置列表(在第 1 列中),然后在目录中找到该文件并将其复制到一个新文件夹,并为其指定列中指定的名称2 的 CSV 文件。

CSV 看起来像:

U:\source\OHSVols180\A100\B100\C107\F109.DOC,file1
U:\source\OHSVols180\A100\B100\C110\F152.PDF,file2

下面的 .BAT 文件目前可以访问 CSV 字段 1 并将文件复制到新文件夹中。我的问题是如何设法根据 CSV 中的第 2 列重命名复制的文件?它可以保持与之前列 1 中列出的文件扩展名相同。目前他的文件最初被命名为 F109.DOC 和 F152.PDF 但我希望它们被称为 file1.DOC 和 file2.PDF。

for /f "tokens=1 delims=," %%L in (U:\ExportList.csv) do copy "%%L" U:\Exported\

非常感谢任何帮助。不确定如何引用 CSV 的第二部分以及重命名文件的代码。

【问题讨论】:

    标签: windows csv batch-file


    【解决方案1】:
    for /f "tokens=1,2 delims=," %%L in (U:\ExportList.csv) do copy "%%L" "U:\Exported\%%M%%~xL"
    

    其中%%M 是请求的第二个令牌(第二个字段将使用L 之后的下一个字母用作可替换参数),%%~xL%%L 引用的文件的扩展名

    【讨论】:

    • 工作如梦感谢现在有一个漂亮的小文件复制程序!我了解令牌第 1,2 部分,并且您只需将字母表中的下一个字母用于下一列。只是出于兴趣,您能解释一下 %%M%%~xL 部分的含义吗?
    • @83dons,它包含在答案中。您可以从命令行执行for /? 以获取可用修饰符的完整列表。
    • 啊,是的,很抱歉,感谢您提供的解决方案,我花了一天半的时间来解决这个问题!
    • 我还有一个额外的问题,这是人们可能感兴趣的上述问题的附加问题 - 因此没有新主题。如果我可以从两列访问表中提取文件位置和文件名,那将更加简化,因为这是它所在的位置。 Access 数据库称为“Export_Staff_Records.accdb”,表称为“GENISYS_List_2”。这将允许我删除必须从 Access 导出 CSV 的部分。我不确定 Access 表是否可以用作查找源以及如何在上面的查询中引用它。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多