【问题标题】:Find and copy files in batch with keeping the original structure在保持原始结构的情况下批量查找和复制文件
【发布时间】:2013-06-24 14:40:23
【问题描述】:

我需要在我的“C”驱动器上找到所有 *.PST 文件,并将所有实例复制到 C:\ 上的新文件夹中

如何在dos-batch中保持原始结构?我不想覆盖第二个实例第一个..

  • 我认为这应该可行,但我需要保留原始子目录还是将每次点击都转到一个唯一的子目录?
  • 我必须从搜索中排除 c:\backuppst 目录
 for /f "delims=" %%i in ('dir /s /b /a-d *.PST') do copy /b "%%~i" "C:\backuppst" 

编辑

按照你的建议,我使用 Xcopy:

Xcopy c:*.pst c:\backuppst /i/h/s/y /Exclude:my.txt

在 my.txt 我有:C:\backuppst

但我得到“无法执行循环复制”

【问题讨论】:

    标签: for-loop batch-file window cmd findstr


    【解决方案1】:

    试试这个:

    for /f "delims=" %%i in ('dir /s /b /a-d c:\*.PST^|findstr /ivc:"C:\backuppst"') do copy /b "%%~fi" "C:\backuppst"
    

    【讨论】:

      【解决方案2】:

      如果 c:\backuppst 下没有 PST 文件,这应该对您有用。

      @echo off
      for /f "delims=" %%i in ('dir /s /b /a-d \*.PST') do xcopy "%%~i" "c:\backuppst%%~pi"
      pause
      

      【讨论】:

      • 运行此 sn-p 后,我收到错误消息。该文件已存在时无法创建文件....创建的目录,但文件未复制
      • @holian 我用一些示例文件测试和编辑了上面的代码。立即尝试。
      • 像魅力一样工作!非常感谢!
      【解决方案3】:

      使用xcopy命令,一气呵成,无需for

      它支持参数/exclude,它可以让你排除特定的文件或文件夹,比如你的备份目录。

      【讨论】:

      • 我尝试了你的建议,但我得到了循环错误。如果我只为一个目录尝试 xcopy,那么工作
      • 由于您正在复制 pst 文件,因此您应该排除这些文件。掩码已经是 *.pst,所以不需要排除 my.txt。我认为您的命令应该类似于xcopy c:\*.pst c:\backuppst\ /s/i/h/y /exclude:c:\backuppst,以防止将c:\backuppst 的内容复制到自身。
      • /exclude: 仅指文件。它需要是一个文本文件,其中包含 c:\backuppst\*.* 或 c:\backuppst\ 之类的内容。
      猜你喜欢
      • 2023-02-26
      • 2017-02-15
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多