【问题标题】:Batch file loop to grab all folders in a directory except for a certain folder批处理文件循环以获取目录中除特定文件夹外的所有文件夹
【发布时间】:2011-10-08 19:42:59
【问题描述】:

只是想知道在单个批处理文件中执行此操作的最佳方法。我有一个名为 C:\Program\Foo 的文件夹,我想获取除 foo 中的测试文件夹之外的所有文件夹,并且我想 xcopy 到 D:\ 所以在 D:\ foo 中会存在但没有测试文件夹.

有没有一种方法可以遍历每个文件夹并检查某个名称是否不包括在内?

使用 /Exclude 意味着我需要一个带有“测试”的额外文本文件

【问题讨论】:

    标签: batch-file cmd directory


    【解决方案1】:

    你能用ROBOCOPY吗?

    ROBOCOPY C:\Program\Foo D:\ * /E /XD Test
    
    • /E 复制子文件夹和文件
    • /XD 不包括目录

    【讨论】:

      【解决方案2】:

      使用 EXCLUDE 选项并将您的排除项放入该文件中。这将使您排除整个目录。

      http://www.pcreview.co.uk/forums/using-xcopy-backup-can-exclude-some-directories-t489674.html

      xcopy "c:\document and settings" "i:\documents and settings\" /s /d /EXCLUDE:c:\a.txt

      a.txt 包含

      \温度\ \临时网络文件\

      您可能需要使用较短的 DOS 文件名。

      【讨论】:

        【解决方案3】:

        我不明白您为什么不能创建临时排除文件(即使用临时文件夹):

        @ECHO OFF
        FOR %%F IN ("%TEMP%\exclude.txt") DO SET tmpf=%%~sF
        ECHO Testing>%tmpf%\exclude.txt
        XCOPY source destination /EXCLUDE:%tmpf%\exclude.txt other options
        

        注意:XCOPY 不将双引号识别为/EXCLUDE 选项中的路径分隔符,并且没有提供用于指定带空格的路径的替代方法,这在 Windows XP 系统上可能是一个问题。可以通过将原始路径替换为仅包含短名称的对应路径来解决此限制。这就是上述脚本中的FOR 循环对%TEMP% 文件夹所做的事情。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-13
          • 1970-01-01
          • 2021-12-07
          • 1970-01-01
          • 2015-05-10
          • 1970-01-01
          • 2012-12-15
          相关资源
          最近更新 更多