【问题标题】:copying list of semicolon delimited files from txt file to given folder in windows cmd将分号分隔的文件列表从txt文件复制到Windows cmd中的给定文件夹
【发布时间】:2011-04-29 18:04:56
【问题描述】:

我有一个包含例如的文本文件:

c:\test\test1.txt;d:\test2\j.js;d:test2\2.cs

我需要将那些使用 Windows 命令行 bat 文件分隔的文件复制到传递给 bat 文件的给定文件夹。我怎样才能做到这一点?

【问题讨论】:

    标签: windows command-line windows-scripting


    【解决方案1】:

    其实很简单:

    for /f %%l in (somefile.txt) do (
        for %%f in (%%l) do (
            copy "%%f" %1
        )
    )
    

    第一个循环逐行遍历文件;第二个将在分号处拆分(以及其他内容,例如空格和逗号)。如果文件名看起来像您提供的文件名,它应该可以工作。

    如果复制目标也是这样,显然只需再添加两个循环:

    for /f %%l in (somefile.txt) do (
        for %%f in (%%l) do (
            for /f %%k in (destination.txt) do (
                for %%g in (%%k) do (
                    copy "%%f" %%g
                )
            )
        )
    )
    

    【讨论】:

    • 如果我需要复制目的地会是这样的
    • @Joey 当我运行时---------------for /f %%l in (d:\BuildServer\BuildScripts\sourceFilelist.csv) do (for %%f in (%%l) do ( for %%k in (d:\BuildServer\BuildScripts\Destinationlist.csv) do ( for %%g in (%%k) do ( copy "%%f" %% g ) ) ) ) ------------- Destinationlist.csv 文件替换为源文件列表,最后其内容替换为源文件列表的最后一个文件,cmd 输出打印 %g 和 % k 作为它自己的字符,即没有分配给它们的值没有按我预期的那样工作
    • @DSharper,请再问一个问题。
    • 只需将for %%k 更改为for /f %%k
    • 啊,谢谢,mousio。不过,我不得不承认没有尝试理解代码呕吐物想在 DSharper 的评论中对我说什么。
    【解决方案2】:

    您可以使用以下批处理文件命令从文件列表中复制文件:

    for /f "usebackq delims=;" %%f in (filelist.txt) do copy %%f %1
    

    假设 filelist.txt 的每个文件名都在单独的一行中:

    c:\test\test1.txt;
    d:\test2\j.js;
    d:\test2\2.cs
    

    不知道如何解析单行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多