Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 创建批处理文件以将整个目录复制到新的变量目录_Batch File - Fatal编程技术网

Batch file 创建批处理文件以将整个目录复制到新的变量目录

Batch file 创建批处理文件以将整个目录复制到新的变量目录,batch-file,Batch File,这是我的问题。玩一款电脑游戏(雅克罕姆城),有时可能会从任何地方破坏储蓄。我的想法是每次启动游戏时将保存的数据复制到一个新目录(而不是覆盖它)。事实上,此批处理文件将完成所有操作。将文件复制到新目录,然后执行游戏。我希望每次执行批处理时,它都将所有文件复制到一个变量目录,并将其复制到一个新文件夹中,如Backup1、Backup2等 此游戏使用两个目录保存数据-两者都需要: C:\Users\Daddy\Documents\WB游戏 C:\Users\Daddy\AppData\Local\Mi

这是我的问题。玩一款电脑游戏(雅克罕姆城),有时可能会从任何地方破坏储蓄。我的想法是每次启动游戏时将保存的数据复制到一个新目录(而不是覆盖它)。事实上,此批处理文件将完成所有操作。将文件复制到新目录,然后执行游戏。我希望每次执行批处理时,它都将所有文件复制到一个变量目录,并将其复制到一个新文件夹中,如Backup1、Backup2等

此游戏使用两个目录保存数据-两者都需要: C:\Users\Daddy\Documents\WB游戏 C:\Users\Daddy\AppData\Local\Microsoft\XLive

然后将这些目录和子目录复制到如下位置:

C:\Users\Daddy\Documents\Batman\GameSaveData\Backup1\其中1后面的值是变量。因此,每次我执行此批处理时,它都会将一组新的保存数据转储到该目录下的新备份%文件夹中

下面的示例是静态的,但只是覆盖到同一目录。不幸的是,在我开始玩之前,我不知道我的游戏是否已损坏,但到那时,批处理将用损坏的保存覆盖好的保存。这就是为什么我总是希望转储到新的备份文件夹中。

xcopy“C:\Users\Daddy\Documents\WB Games”C:\Users\Daddy\Documents\Batman\GameSaveData\WB Games”/D/E/C/R/I/K/Y/S

xcopy“C:\Users\Daddy\AppData\Local\Microsoft\XLive”C:\Users\Daddy\Documents\Batman\GameSaveData\XLive”/D/E/C/R/I/K/Y/S


“C:\Program Files(x86)\WB Games\Batman Arkham City GOTY\Binaries\Win32\BmLauncher.exe”

我建议您将%date%和%time%子字符串添加到yyyymmddhhmmss变量中,并使用它代替1,2等

你会怎么做完全取决于你的日期和时间格式,但在这方面有大量的文档记录


使用yyyymmddhhmmss格式意味着
dir
列表中的最后一个目录将是按时间顺序排列的最后一个…

这应该可以做到:

(将在“%Userprofile%\Documents\Batman\GameSaveData”中创建名为YYYY-MM-DD_HourMinuteSecond的子文件夹,并将内容复制到其中)

编辑:
我没有检查您的XCOPY命令行,只是复制并粘贴了它。:)

我倾向于选择robocopy而不是xcopy,但是一个想法是在你要复制到的每个目录的列表中添加一个日期时间,所以每次都不一样。正在创建文件夹,但没有将任何内容复制到其中。从xcopy行的前面删除“ECHO”就成功了。还通过添加friendlytime1和2来分隔它们进入的文件夹。非常感谢你们,这正是我所需要的。试图发布最终代码,但不理解如何在这里发布代码。告诉我我有太多的角色。。。说了一些关于但仍然告诉我太多的字符…代码必须使用严重的重音符号()。我已经删除了“回声”。它们只是在我的机器上测试。如果现在一切正常,请随时将其标记为答案。:)
@ECHO OFF
FOR /F "SKIP=1 TOKENS=1-7" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
   IF NOT "%%~F" == "" (
      SET YYYY=%%F
      SET MM=00%%D
      SET DD=00%%A
      SET HH=00%%B
      SET Min=00%%C
      SET Sec=00%%E
    )
)

SET friendlyTime=%YYYY%-%MM:~-2%-%DD:~-2%_%HH:~-2%%Min:~-2%%Sec:~-2%
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT EXIST "%Userprofile%\Documents\Batman\GameSaveData\%friendlyTime%" MD "%Userprofile%\Documents\Batman\GameSaveData\%friendlyTime%"
ENDLOCAL 

XCOPY "%Userprofile%\Documents\WB Games" "%Userprofile%\Documents\Batman\GameSaveData\%friendlyTime%\WB Games" /D /E /C /R /I /K /Y /S
XCOPY "%LocalAppData%\Microsoft\XLive" "%Userprofile%\Documents\Batman\GameSaveData\%friendlyTime%\XLive" /D /E /C /R /I /K /Y /S