使用批处理文件将文件夹的所有内容复制到另一个文件夹?

我有一个文件夹: C:\Folder1

我想把 Folder1的所有内容拷贝到另一个地方,D:\Folder2

如何使用批处理文件执行此操作?

480829 次浏览

xcopy.exe是这里的解决方案,它内置在 Windows 中。

xcopy /s c:\Folder1 d:\Folder2

您可以在 http://www.computerhope.com/xcopyhlp.htm找到更多选项

如果你有机器人复制,

robocopy C:\Folder1 D:\Folder2 /COPYALL /E

否则,

xcopy /e /v C:\Folder1 D:\Folder2
@echo off
::Ask
echo Your Source Path:
set INPUT1=
set /P INPUT1=Type input: %=%


echo Your Destination Path:
set INPUT2=
set /P INPUT2=Type input: %=%


xcopy %INPUT1% %INPUT2% /y /s
@echo off
:: variables
echo Backing up file
set /P source=Enter source folder:
set /P destination=Enter Destination folder:
set xcopy=xcopy /S/E/V/Q/F/H/I/N
%xcopy% %source% %destination%
echo files will be copy press enter to proceed
pause

仅供参考... ... 如果您使用 TortoiseSVN,并且希望创建一个简单的批处理文件,以便定期将整个存储库 xcopy (或目录镜像)复制到“安全”位置,那么这就是您可能希望使用的特定代码。它复制隐藏的目录/文件,维护只读属性,所有子目录和最好的是,不提示输入。只要确保正确分配了 folder1(安全回购)和 folder2(可用回购)。

@echo off
echo "Setting variables..."
set folder1="Z:\Path\To\Backup\Repo\Directory"
set folder2="\\Path\To\Usable\Repo\Directory"
echo "Removing sandbox version..."
IF EXIST %folder1% (
rmdir %folder1% /s /q
)
echo "Copying official repository into backup location..."
xcopy /e /i /v /h /k %folder2% %folder1%

就是这样,伙计们!

添加到您的计划任务,永远不要回头。

如果你想删除的消息,告诉如果目标是一个文件或文件夹,你只需添加一个斜杠:

Xcopy/s c: Folder1 d: Folder2

在我的电脑上,xcopy 和 robocopy 也需要它们的路径,即 C: Windows System32 xcopy.exe

这就是为什么我使用简单的“复制”: 拷贝/y... . Folder1 File.txt... . Folder2

我看到许多答案建议使用 xcopy。 但这是不必要的。正如问题清楚地提到,作者希望文件夹中的内容,而不是文件夹本身被复制在这种情况下,我们可以-:

copy "C:\Folder1" *.*  "D:\Folder2"

如果 C:\Folder1中存在任何子目录,则可以使用所有 xcopy

@echo off
xcopy /s C:\yourfile C:\anotherfile\

就是这么做的! 很简单,对吧?

RoboCopy 不适合我,这里有一些很好的解决方案,但是没有人解释 XCopy 交换机和它们的作用。另外,您还需要引号,以防您的路径中有空格。

xcopy /i /e "C:\temp\folder 1" "C:\temp\folder 2"

下面是来自微软的文档:

复制 MS 文档

/s: Specifies to include subdirectories. Excludes empty subdirectories
/e: Copies all subdirectories, even if they are empty
/i: specifies the destination is a folder (Otherwise it prompts you)

我已经写了一个。Bat 文件将文件复制粘贴到一个临时文件夹,并将其压缩并传输到 smb 挂载点, 希望这个能帮上忙,

    @echo off
if not exist "C:\Temp Backup\" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
if not exist "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP"
if not exist "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
xcopy /s/e/q "C:\Source" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
"C:\Program Files (x86)\WinRAR\WinRAR.exe" a  "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP\ZIP_Backup_%date:~-4,4%_%date:~-10,2%_%date:~-7,2%.rar" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\TELIUM"
"C:\Program Files (x86)\WinRAR\WinRAR.exe" a  "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP\ZIP_Backup_Log_%date:~-4,4%_%date:~-10,2%_%date:~-7,2%.rar" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
NET USE \\IP\IPC$ /u:IP\username password
ROBOCOPY "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP"  "\\IP\Backup Folder" /z /MIR /unilog+:"C:\backup_log_%date:~-4,4%%date:~-10,2%%date:~-7,2%.log"
NET USE \\172.20.10.103\IPC$ /D
RMDIR /S /Q "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"

这是一个使用 机器人复制的解决方案,它将 文件夹1的内容复制到 文件夹2,然后遍历所有子目录,并自动覆盖具有相同名称的文件:

robocopy C:\Folder1 C:\Folder2 /COPYALL /E /IS /IT

这里:

/COPYALL复制所有文件信息
/E复制包括空目录的子目录
/IS包含相同的文件
/IT包括具有相同名称的修改过的文件

有关更多参数,请参见官方文档: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy

注意 : 由于参数 /COPYALL,可能需要以管理员身份运行命令。如果你做不到,就把它扔掉。