【问题标题】:Windows batch command to move all folders in a directory with exceptionsWindows批处理命令移动目录中的所有文件夹,但有例外
【发布时间】:2011-09-18 12:09:18
【问题描述】:

我正在尝试编写一个 Windows 批处理文件,该文件允许我将给定源目录中的所有目录移动到该源目录中存在的目标目录中。

显然我的移动命令只需要应用于目录,并且还排除目标目录被处理。

这可以通过 Windows 批处理命令实现吗?

【问题讨论】:

    标签: windows batch-file directory move


    【解决方案1】:

    Robocopy(存在于最新版本的 windows 或可从WRK 下载)可以做到这一点,只需使用/xd 开关从副本中排除目标目录;

    robocopy c:\source\ c:\source\target\ *.* /E /XD c:\source\target\ /move
    

    【讨论】:

    • 移动时要跳过多个异常或多个目录怎么办?通过添加它来改进您的答案。
    【解决方案2】:
    FOR /d %%i IN (*) DO IF NOT "%%i"=="target" move "%%i" target
    

    【讨论】:

      【解决方案3】:

      这不起作用 - 即使您明确排除目标目录,您也会收到一个错误消息,告诉您目标目录在源目录中左右。您可以做的是将目录移动到不在源下的临时位置,然后将它们移动到目标中。

      顺便说一句,使用move 命令不会让您指定要排除的文件夹。为此,您可以使用xcopy,但请注意,它会复制文件夹,而不是移动它们。如果这很重要,您可以在之后删除您想要的任何内容,只要确保您不删除源目录中的目标目录...

      【讨论】:

        【解决方案4】:

        使用 Windows 7 附带的 robocopy,我发现 /XD 选项并没有阻止源文件夹也被移动。

        解决方案:

        SET MoveDirSource=\\Server\Folder
        SET MoveDirDestination=Z:\Folder
        FOR /D %%i IN ("%MoveDirSource%\*") DO ROBOCOPY /MOVE /E "%%i" "%MoveDirDestination%\%%~nxi"
        

        这会遍历顶级文件夹并为每个文件夹运行 robocopy。

        【讨论】:

          【解决方案5】:

          注意:上面提到的 Robocopy 使用 /move 标志将复制文件,然后从源文件夹中删除它们,而不是移动文件。如果将大量文件从同一磁盘上的一个位置移动到另一个位置,这可能很关键(因为移动几乎是即时的,而复制是一个慢得多的操作)

          【讨论】:

            【解决方案6】:

            在 Windows 批处理上:

            FOR /d %%i IN (MySourceDirectory\*) DO move "%%i" MyTargetDirectory\%%~ni
            

            上述命令使用原始目录名称将在 MySourceDirectory (/d) 中找到的所有目录移动到 MyTargetDirectory (~ni) Robocopy的move是先复制,再删除,所以比较慢。

            【讨论】:

              【解决方案7】:

              这对我有用:

              move c:\fromDir\*.* c:\toDir\
              

              【讨论】:

              • 至少在 winserver2012r2 上,这仅适用于移动文件,但不适用于子目录 - 并且不包括任何“例外”选项
              猜你喜欢
              • 2011-12-02
              • 2015-08-05
              • 1970-01-01
              • 2016-01-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-07-27
              • 2012-03-12
              相关资源
              最近更新 更多