批处理文件将文件从一个文件夹复制到另一个文件夹

时间:2009-06-12 12:45:25

标签: batch-file file-io

我在网络上有一个存储文件夹,所有用户都将其活动数据存储在服务器上。现在由于地方问题,服务器将被新服务器替换,因此我需要将子文件夹文件从旧服务器存储文件夹复制到新服务器存储文件夹。我有以下前:

来自\ Oldeserver \ storage \ data&的

文件到\新服务器\存储\数据&文件。

10 个答案:

答案 0 :(得分:392)

xcopy.exe 绝对是您的朋友。 它内置于Windows中,因此它的成本一无所获。

只需xcopy /s c:\source d:\target

你可能想要调整一些东西;我们还添加了一些选项:

  • /s/e - 递归复制,包括复制空目录。
  • /v - 添加此项以验证原件的副本。慢,但对于偏执狂。
  • /h - 复制系统和隐藏文件。
  • /k - 将只读属性与文件一起复制。否则,所有文件都会成为读写。
  • /x - 如果您关心权限,可能需要/o/x
  • /y - 在覆盖现有文件之前不要提示。
  • /z - 如果您认为副本可能失败并且您想重新启动它,请使用此方法。它在复制时在每个文件上放置一个标记,因此您可以重新运行xcopy命令以从它停止的位置进行拾取。

如果您认为xcopy可能在中途失败(例如当您通过片状网络连接进行复制时),或者您必须停止它并希望稍后继续,则可以使用xcopy /s/z c:\source d:\target

希望这有帮助。

答案 1 :(得分:50)

为了清楚起见,当你使用xcopy /s c:\source d:\target时,在c:\ source和d:\ target周围放置“”,否则会出错。

即如果路径中有空格,即如果你有:

"C:\Some Folder\*.txt"

但如果您有以下情况则不需要:

C:\SomeFolder\*.txt

答案 2 :(得分:42)

我最喜欢的备份数据是:

ROBOCOPY "C:\folder" "C:\new_folder" /mir

/ mir用于镜像。您还可以使用/ mov移动文件。它重现完全相同的文件夹。它可以根据需要删除/覆盖文件。对我来说很棒。 它比xcopy / copy更快。它也是在Windows中构建的。

来源:http://technet.microsoft.com/en-us/library/cc733145.aspx

答案 3 :(得分:17)

您可能需要查看XCopyRoboCopy,它们是Windows上几乎所有文件复制操作的全面解决方案。

答案 4 :(得分:13)

绕过'在目标上指定文件名或目录名(F =文件,D =目录)?'使用xcopy提示,您可以执行以下操作...

echo f | xcopy /f /y srcfile destfile

或者我们这些人只是复制大型子结构/文件夹:

use / i指定目标必须是复制多个文件的目录

答案 5 :(得分:2)

如果你想复制不使用绝对路径的文件,换句话说就是相对路径:

不要忘记在路径中写反义词而不是斜线(^^)

示例:

    copy children-folder\file.something .\other-children-folder

PS:可以使用这些名为"批量参数"

的通配符检索绝对路径
    @echo off
    echo %%~dp0 is "%~dp0"
    echo %%0 is "%0"
    echo %%~dpnx0 is "%~dpnx0"
    echo %%~f1 is "%~f1"
    echo %%~dp0%%~1 is "%~dp0%~1"

在此处查看有关副本的文档:https://technet.microsoft.com/en-us/library/bb490886.aspx

此处还有批处理参数文档: https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true

答案 6 :(得分:1)

@echo off

rem The * at the end of the destination file is to avoid File/Directory Internal Question.

rem You can do this for each especific file. (Make sure you already have permissions to the path)
xcopy /Y "\\Oldeserver\storage\data\MyFile01.txt" "\\New server\storage\data\MyFile01.txt"*
pause

rem You can use "copy" instead of "xcopy "for this example.

答案 7 :(得分:0)

查看基于rsync的Windows工具NASBackup。如果您熟悉rsync命令,那将是一个额外的好处。

答案 8 :(得分:0)

您可以使用esentutl通过进度条复制(主要是大文件):

esentutl /y "my.file" /d "another.file" /o

进度条如下所示:

enter image description here

答案 9 :(得分:0)

如果您可以使用 Bash,您可以简单地使用以下带有递归选项的命令。

cp -r "C:\Users\sourceFolder\." "C:\Users\destinationFolder"

这将复制 sourceFolder insde destincationFolder 下包含的所有文件和文件夹