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

时间:2014-11-07 03:31:42

标签: batch-file

这是我的问题。玩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"

2 个答案:

答案 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,只是复制并粘贴它。 :)