我有一个文件夹:
C:\Folder1
我想将
Folder1
的所有内容复制到另一个位置,D:\Folder2
如何使用批处理文件执行此操作?
xcopy.exe
就是这里的解决方案。它内置于 Windows 中。
xcopy /s c:\Folder1 d:\Folder2
找到更多选项
如果您有 robocopy,
robocopy C:\Folder1 D:\Folder2 /COPYALL /E
否则,
xcopy /e /v C:\Folder1 D:\Folder2
我看到很多答案建议使用
xcopy
。
但这是不必要的。由于问题明确提到作者希望复制文件夹中的内容而不是文件夹本身,在这种情况下我们可以这样做
copy "C:\Folder1\*.*" "D:\Folder2"
仅此而已
xcopy
可用于如果 C:\Folder1
中存在任何子目录
如果您想删除指示目标是文件还是文件夹的消息,只需添加斜杠:
xcopy /s c:\Folder1 d:\Folder2\
RoboCopy 对我不起作用,这里有一些很好的解决方案,但没有一个解释 XCopy 开关及其作用。如果您的路径中有空格,您还需要引号。
xcopy /i /e "C:\temp\folder 1" "C:\temp\folder 2"
这是 Microsoft 的文档:
/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)
这是使用 robocopy 的解决方案,它将 Folder1 的内容复制到 Folder2 中,遍历所有子目录并自动覆盖同名文件:
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
,可能需要以管理员身份运行该命令。如果你不能:就摆脱它吧。
@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
在我的电脑上,xcopy 和 robocopy 还需要它们的路径,即 C:\Windows\System32\xcopy.exe
这就是为什么我简单地使用“复制”: 复制 /y ....\Folder1\File.txt ....\Folder2\
@echo off
xcopy /s C:\yourfile C:\anotherfile\
原来是这样的! 很简单吧?
使用以下命令进行复制
机器人复制/E robocopy C:\Folder1 D:\Folder2 /E
标志: /E:- 如果您想包含一个空子文件夹 /S:- 如果您想排除空子文件夹 /XD:- 如果您想排除某些子文件夹,请使用此标志,之后您可以提及子文件夹的名称,该名称将不会被复制。 /COPYALL:- 复制所有文件信息 欲了解更多信息,您可以访问Microsoft Robocopy链接
仅供参考...如果您使用 TortoiseSVN 并且想要创建一个简单的批处理文件来定期将整个存储库复制(或目录镜像)到“安全”位置,那么这是您可能想要使用的特定代码。它复制隐藏的目录/文件,维护只读属性,以及所有子目录,最重要的是,不会提示输入。只需确保正确分配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%
而且,就是这样!
添加到您的计划任务中,永不回头。
我编写了一个 .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%"
@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