我正在尝试编写一个批处理文件,将本地存储的文件备份到网络驱动器。有些文件夹被成功复制,但其他文件夹没有被复制;相反,执行命令时目标文件夹被删除。
按预期工作(将所有文件复制到目标文件夹):
XCOPY /Y "C:\APPS\lse_jboss-4.2.3.GA-1.1\server\default\deploy\lse_datasources-esl_sourcesdedonnees" "H:\My Documents\RESTORE\Data sources"
XCOPY /Y "%AllUsersProfile%\Desktop" "H:\My Documents\RESTORE\Desktop - Global"
XCOPY /Y "%UserProfile%\Desktop" "H:\My Documents\RESTORE\Desktop - mwa700"
XCOPY /Y "%UserProfile%\Favorites" "H:\My Documents\RESTORE\Favorites"
XCOPY /Y "%UserProfile%\Application Data\Microsoft\Templates" "H:\My Documents\RESTORE\Office templates"
未按预期工作(复制 0 个文件,并删除目标文件夹):
XCOPY /Y "%UserProfile%\java_libraries" "H:\My Documents\RESTORE\java_libraries"
XCOPY /Y "%UserProfile%\workspaces" "H:\My Documents\RESTORE\workspace"
这两个文件夹的内容或属性是否可以解释这种行为?
答案1
是的。默认情况下,xcopy
仅复制文件,而不复制目录。因此,如果您的源目录仅包含其他子目录,则不会复制任何内容。要确保您还复制目录,请使用标志/E
复制目录和子目录(包括空目录)或/S
跳过空目录。
xcopy /Y /E "src" "dest"
/I
如果复制多个文件,则也假定目标是一个目录。
xcopy /Y /E /I "src" "dest"
如需更多帮助,请使用
xcopy /?
答案2
我不知道这个答案是否适合您,但我使用 xcopy 命令将 C: 文件夹的所有内容复制到另一个磁盘设备上的备份位置(称为文件夹 E:\A)。复制成功完成后,文件夹 E:\A 从资源管理器中消失了!
通过将 E: 上的设备移动到另一台计算机,我可以看到 xcopy 设置了 E:\A 的 S 和 H(系统和隐藏)属性,导致其消失。这些属性可能正确地从 C:\ 文件夹复制到了 E:\A 文件夹本身。
我使用 attrib 命令恢复了这两个属性,现在一切正常。E:\A 包含从 C: 复制的文件夹和文件。
答案3
尝试对 Documents and Settings 使用 dos 格式的文件名,或者使用 %userprofile% 路径命令变量。
上述两个语句之间的唯一区别是工作脚本中的源中没有空格,而非工作脚本的路径中有空格。
首先使用 %userprofile% 路径命令,它更简单并且受所有 MS 操作系统支持。