【问题标题】:Using Windows commandline, how can I completely replace one folder with another?使用 Windows 命令行,如何将一个文件夹完全替换为另一个文件夹?
【发布时间】:2013-01-31 23:18:41
【问题描述】:

到目前为止,我可以将所有文件从 c:\Users\John\Folder1 复制到 c:\Users\John\Folder2

但我希望完全交换文件夹。

例如将c:\Users\John\Folder1 替换为c:\Users\John\SomeFolder\Folder1

我现在有这个:xcopy c:\Users\John\SomeFolder\* c:\Users\John\Folder1 /s /i

这只是将所有文件从c:\Users\John\SomeFolder\Folder1 复制到c:\Users\John\Folder1,但保留之前存在的文件。我想要替换整个文件夹。如果我要复制的新文件夹不再有这些文件,我希望将它们删除。

抱歉,如果这令人困惑 - 非常感谢任何帮助。

【问题讨论】:

  • 这是一个两步过程:首先擦除old文件夹中的所有文件,然后将new文件夹内容复制到old文件夹...这是最简单的方法,不要'你觉得呢?
  • 所以先删除Folder1

标签: command-line batch-file cmd xcopy


【解决方案1】:

我认为您可以创建一个批处理文件来执行此操作。

伪代码:

  1. 删除目录 1 的内容
  2. 将目录1的内容复制到目录2

代码: 在记事本中创建一个名为swapFiles.bat 的文件,然后输入以下代码:

rd /s %1
mkdir %1
xcopy /s /i %2\* %1

如何使用:

swapFiles c:\Users\directory1 c:\Users\directory2

directory1old 目录(即将被清除的目录)

希望对你有帮助

【讨论】:

  • 不错!我明天要试试这个。我一定会让大家知道结果如何。
  • 等等...#2 不应该是“将目录 2 中的内容复制到目录 1”吗?
  • 您删除内容然后尝试复制它,您需要相反的方式:)
  • 这成功了!再次感谢!以防万一有人想知道,这是我的命令的外观:rd /s \\psf\Home\Desktop\NewFolder\Test1mkdir \\psf\Home\Desktop\NewFolder\Test1xcopy /s /i \\psf\Home\Desktop\Test2\* \\psf\Home\Desktop\NewFolder 目录\\psf\Home\Desktop\Test2` has a folder named Test1`,它替换了文件夹\\psf\Home\Desktop\NewFolder\Test1
【解决方案2】:

也许我完全没有理解你的意思,但这不会起作用吗? (示例):

rename Folder1 transit
rename Folder2 Folder1
rename transit Folder2

【讨论】:

  • 对不起。我对这些东西完全陌生,所以我从未听说过“过境”。当我用谷歌搜索时,它甚至从未出现过:/
  • Transit 只是我选择的任意名称:)
  • 我的错,我应该选择一些明显的东西,比如 Temp。
  • 但是除了重命名文件夹之外,这并没有真正做任何事情,对吧?我正在尝试将一个目录的全部内容替换为另一个可能完全位于其他位置的目录。
  • OK - 重命名只能在同一个驱动器上使用,所以如果你要跨越这些界限,你还必须输入一些 xcopy 命令。
【解决方案3】:

这会将第一个文件夹镜像到第二个文件夹。

非常小心路径是否正确。

@echo off
robocopy "c:\Users\John\SomeFolder\Folder1" "c:\Users\John\Folder1" /mir

【讨论】:

    【解决方案4】:

    你想在复制文件夹 1 之前删除这个文件夹 c:\Users\John\SomeFolder,如果是这样,这段代码可能适合你

    @echo off
    
    robocopy /s c:\Users\John\Folder1 c:\Users\John\SomeFolder\Folder1
    rmdir /s /q c:\Users\John\Folder1
    

    【讨论】:

    • 不,我希望删除 c:\Users\John\ Folder1 并将其替换为 c:\Users\John\SomeFolder\Folder1。所以包含文件的目录仍然是c:\Users\John\Folder1
    • 我认为现在这段代码将删除文件夹 c:\Users\John\ Folder1 并给出所需的结果
    猜你喜欢
    • 2011-06-12
    • 2019-07-25
    • 2012-11-20
    • 2016-06-28
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多