【问题标题】:How do I copy files using Windows Batch?如何使用 Windows Batch 复制文件?
【发布时间】:2008-10-09 02:24:21
【问题描述】:

我有一个目录,其中包含多个包含文件的子目录。
如何将子目录中的所有文件复制到新位置?

编辑:我不想复制目录,只复制文件...

由于这仍然在 XP 上,我选择了以下解决方案:

 for /D %S IN ("src\*.*") DO  @COPY "%S\" "dest\"

谢谢!

【问题讨论】:

    标签: copy batch-file cmd


    【解决方案1】:

    好的。通过您的编辑说您不想要目录结构,我认为您会想要使用这样的东西:

    for /F "usebackq" %s IN (`DIR /B /S /A-D SrcDir`) DO @(
        XCOPY %s DestDir\%~nxs
    )
    

    【讨论】:

    • 啊啊啊啊啊啊啊啊啊啊啊啊啊啊好想bash啊! find SrcDir -type f -exec cp {} DestDir\;
    【解决方案2】:

    Xcopy 命令在这里应该有所帮助。

    XCOPY /E SrcDir\*.* DestDir\
    

    或者如果您不想要 SrcDir 中的任何文件,只想要子目录,您可以将 XCOPY 与 FOR 命令结合使用:

    FOR /D %s IN (SrcDir\*) DO @XCOPY /E %s DestDir\%~ns\
    

    【讨论】:

      【解决方案3】:

      robocopy "c:\source" "c:\destination" /E

      【讨论】:

      • RoboCopy 是一款出色的实用程序,并且非常强大。如果这是关键任务,那么 robocopy 可能是您的主要选择。
      • 此外,xcopy 在 Vista 上已弃用,取而代之的是 robocopy
      • 哈哈哈,我不太担心 xcopy 很快就会去任何地方。不过,好点。
      【解决方案4】:

      如果我对您的理解正确,您有一个很大的目录树,并且您希望其中的所有文件都在一个目录中。如果这是正确的,那么我可以分两行来做:

      dir /s /b "yourSourceDirectoryTreeHere" > filelist.txt
      for /f %f in (filelist.txt) do @copy %f "yourDestinationDirHere"
      

      在批处理文件与命令行中,将 %f 更改为 %%f

      【讨论】:

      • 我喜欢你的解决方案,但我的解决方案是在一行中完成的,没有临时文件。谢谢!
      • 你的做整棵树吗?我不认为它有,但我想我必须尝试一下。
      • Eric 下面的回答看起来是我的两行命令的单行版本,没有临时文件。
      • 你说得对,马克,看起来我确实借鉴了你的想法。我确实将 /A-D 参数添加到 DIR 命令以使其不列出目录。除此之外,这是你的答案。
      【解决方案5】:

      如果你想在另一端保持相同的文件夹结构,听起来就像 XCOPY 一样简单

      xcopy c:\old\*.* d:\new\ /s

      如果您也想复制空目录,请使用 /e 而不是 /s。

      【讨论】:

        【解决方案6】:
         for /D %S IN ("src\*.*") DO  @COPY "%S\" "dest\"
        

        【讨论】:

        • 如果这对你有用,那就太好了。但是,它的一个问题是,如果您在 src 下有包含所需文件的子目录,则您的命令将无法获取它们(至少据我所知)。在进一步了解您的要求后,我添加了另一个答案。
        猜你喜欢
        • 2011-02-03
        • 1970-01-01
        • 2014-12-19
        • 2021-07-21
        • 2018-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多