![为什么 XCOPY 不能与我的脚本一起工作?](https://linux22.com/image/1560802/%E4%B8%BA%E4%BB%80%E4%B9%88%20XCOPY%20%E4%B8%8D%E8%83%BD%E4%B8%8E%E6%88%91%E7%9A%84%E8%84%9A%E6%9C%AC%E4%B8%80%E8%B5%B7%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我正在制作一个简单的工具,用于备份我的一些游戏的保存文件。有些游戏在一个文件夹中有多个文件,我想将目标文件夹复制到一个新位置并使用新名称,但我无法让它正常工作。我可以使用 和 对单个文件执行此操作COPY
,XCOPY
但对文件夹似乎不起作用。以下是我正在处理的内容:
XCOPY "%USERPROFILE%\EA Games\Dead Space" ".\Save Backup"
XCOPY "%LOCALAPPDATA%\Visceral\Dead Space" ".\Settings Backup"
我曾使用过类似SS64 文档但这些命令都不起作用。我使用过/s
和/t
其他命令,但它们什么也没做。如何将文件夹复制到新位置和在新位置重命名。
答案1
如何将文件夹复制到新位置并在新位置重命名?
我会尝试包括/E
,/I
和/Y
选项,例如:
XCOPY /E /I /Y "%USERPROFILE%\EA Games\Dead Space" ".\Save Backup"
XCOPY /E /I /Y "%LOCALAPPDATA%\Visceral\Dead Space" ".\Settings Backup"
为了(从SS64):
/E
复制文件夹和子文件夹,包括空文件夹(如果没有保存或设置文件)。/I
指示XCOPY
始终假定目标是一个文件夹(当目标不存在时这很有用)。/Y
抑制任何确认覆盖文件的提示(如果您要覆盖现有文件/文件夹则很有用)。
您可能还想考虑/C
,即使发生错误,它也会继续复制。由于您表示您已经尝试了“其他”XCOPY
选项,如果您遇到(或曾经遇到)这些特定选项的问题,您可能希望包含额外的详细信息。
顺便提一下,正如评论中所建议的那样,我将验证您要复制的文件的实际位置。目前,《死亡空间》的 PC 游戏 Wiki列出了这些%USERPROFILE%\Documents\Electronic Arts\Dead Space
保存和%LOCALAPPDATA%\Electronic Arts\Dead Space\
设置。因此:
XCOPY /E /I /Y "%USERPROFILE%\Documents\Electronic Arts\Dead Space" ".\Save Backup"
XCOPY /E /I /Y "%LOCALAPPDATA%\Electronic Arts\Dead Space" ".\Settings Backup"
答案2
假设你使用的是 Windows Vista 或更高版本,你应该考虑使用Robocopy而不是 XCOPY。语法略有不同,但它是为目录设计的。您的特定用例非常适合 /mir 开关。这样做的好处是您可以获得原始目录的真正镜像副本 - 也就是说,源中不再存在的文件将在目标中删除。它还足够智能,可以跳过自上次运行以来未更改的文件。
你的语法很简单
Robocopy "%LOCALAPPDATA%\Electronic Arts\Dead Space" ".\Settings Backup" /mir
Robocopy "%LOCALAPPDATA%\Visceral\Dead Space" ".\Settings Backup" /mir