这是我的问题。玩PC游戏(阿卡姆城),有时会破坏豁免。我的想法是每次开始游戏时将保存数据复制到新目录(而不是覆盖它)。实际上,这个批处理文件将完成所有工作。将文件复制到新目录,然后执行游戏。每当我将批处理执行到Backup1,Backup2等新文件夹时,我希望它将所有文件复制到变量目录。
这个游戏有两个用于保存数据的目录 - 需要它们: C:\ Users \ Daddy \ Documents \ WB Games C:\ Users \用户爸爸\应用程序数据\本地\微软\ XLive
然后将这些目录和子目录复制到这样的位置:
C:\ Users \ Daddy \ Documents \ Batman \ GameSaveData \ Backup1 \其中1之后的值是变量。因此,每次执行此批处理时,它都会将一组新的保存数据转储到该目录的新Backup%文件夹中。
下面的示例是静态的,但只是覆盖到同一目录。不幸的是,在我去玩之前我不知道我的游戏是否已损坏,但到那时,批次将覆盖保存损坏的保存。这就是我想要总是转储到新的备份文件夹的原因
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"
答案 0 :(得分:0)
我建议您将%date%和%time%子串到yyyymmddhhmmss变量,并使用它代替1,2等。
你是如何做到这将取决于你的日期和时间格式,但它已在SO上广泛记录。
使用yyyymmddhhmmss格式意味着dir
列表中的最后一个目录将是最后的按时间顺序...
答案 1 :(得分:0)
这应该可以解决问题:
(将在“%Userprofile%\ Documents \ Batman \ GameSaveData”中创建一个名为YYYY-MM-DD_HourMinuteSecond的子文件夹并将内容复制到其中)
@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
编辑: 我没有检查你的XCOPY-Commandline,只是复制并粘贴它。 :)