【问题标题】:Copying all folders except those containing a "skipthisfolder.txt" file复制除包含“skipthisfolder.txt”文件的所有文件夹
【发布时间】:2012-11-08 20:26:22
【问题描述】:

我想做一个执行以下操作的脚本:

  • 复制从“D:\”到“F:\”的所有文件夹和所有文件 但是
  • 跳过包含“skipthisfolder.txt”文件的所有文件夹

我应该使用哪种脚本语言? (为了在 Windows 中轻松运行,无需任何第三方软件?)我考虑过 .BAT 或 VBS。

【问题讨论】:

    标签: batch-file vbscript copy directory


    【解决方案1】:

    您可以使用 CMD 批处理文件,如下所示:

    @echo off
    for /r D:\ %%a in (.) do (
      IF NOT EXIST "%%~fa\skipthisfolder.txt" XCOPY "%%~fa" "F:%%~pna"
    )
    

    编辑:如果您还需要在找到skipthisfolder.txt 文件时跳过子文件夹,那么这可能是一个解决方案:

    @setlocal enableextensions enabledelayedexpansion
    @echo off
    
    set skip=@
    
    for /r D:\ %%a in (.) do (
      echo %%a | findstr /c:"!skip!" > nul
      if !errorlevel!==1 IF EXIST "%%~fa\skipthisfolder.txt" set skip=%%~dpna
      echo %%a | findstr /c:"!skip!" > nul
      if !errorlevel!==1 XCOPY /D "%%~fa" "F:%%~pna"
    )
    endlocal
    

    【讨论】:

    • 谢谢,我会试试这个!您是否知道在 Windows 资源管理器中选择所有不包含此“skipthisfolder.txt”文件的文件夹的方法?也许在 Windows 的搜索工具中有一些“搜索”字段。
    • 我不知道如何在不使用第三方软件的情况下评估总大小...但是要跳过相同的文件并且只覆盖从不的文件,是的,您可以使用 /D
    • 您可以使用%~za 评估大小,然后将其放入变量中并不断添加以查找文件夹的大小。
    • 我认为 XCOPY 不可能,但你可以使用 ROBOCOPY,它应该是 ROBOCOPY /purge /xo "%%~fa" "F:%%~pna"(我没有测试过还没完成!)。你如何启动命令?你是把它放在 .CMD 文件中还是放在命令行中?
    • 还有一些问题需要修复,如果子目录中有一个 skipthisfolder.txt 文件必须被排除,事情可能会有点混乱,但除此之外它应该可以工作......让我看看!如果您还想计算文件夹的大小...是的,我们可以做到,但我认为最好为它添加一个新问题!
    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2020-11-15
    • 2014-01-14
    • 2014-02-15
    • 2018-02-21
    • 1970-01-01
    相关资源
    最近更新 更多